工厂方法有缺点:每次新增产品类,都需要去修改工厂类的代码。。。
我们改进一下:
在原来代码基础上,我们做如下改进
对每个产品都提供一个工厂类:
public class EmailFactory implements Provider {
public static Email productEmail() {
return new Email();
}
}
public class SmsFactory implements Provider {
@Override
public IAction produce() {
return new Sms();
}
}
他们都需要去实现统一接口:
public interface Provider {
public IAction produce();
}
也就是说使用接口把两个工厂类做了统一:那么再来新产品的时候,我们新增工厂类和对应的产品实现类就可以了。不需要修改工厂。
public class Test {
public static void main(String[] args) {
Provider smsFactory = new SmsFactory();
smsFactory.produce().doSomeThings();
}
}