设计模式之工厂模式(2)
1、定义
????? 多个工厂模式:工厂类中定义多个方法,每个方法对应生成产品
????? 静态工厂模式:工厂类中定义静态方法,每个静态方法对于生成产品;或者定义一个静态方法来生成产品;
?
?
2、例子
????? 拿简单工厂模式(1)的例子进行改进,SenderFactory采用多个工厂模式/静态工厂模式的方法
????? 多个工厂模式:
public class SendFactory {public final static int MAIL = 1;public final static int SMS = 2;public final static int PUSH = 3;public static Sender createSender(int sendType) {Sender sender = null;switch (sendType) {case SendFactory.MAIL:sender = new MailSender();break;case SendFactory.SMS:sender = new SmsSender();break;case SendFactory.PUSH:sender = new PushSender();break;default:sender = new MailSender();break;}return sender;}}
?
??? 与简单工厂模式相比,不管多个工厂模式还是静态工厂模式,SenderFactory类中自己添加相应的方法,如果再添加一种发送方式,还需要修改SenderFactory的类, 还是破坏了开闭原则。
?????
?