【这是针对读这个《简单工厂设计模式》博文的感想 而写的博客,告诉该同学什么是静态工厂】
Client需要依赖抽象类型IServer,而抽象类IServer有子类S1、S2。如果直接使用new表达式的方式创建对象,会使得IServer与S1、S2耦合。代码如下:
package creational.factory;
public class Client{
IServer s= null;
public Client(String typeName){//int ID
if(typeName.equals("S1")){
s = new S1();
}else if(typeName.equals("S2")){
s = new S2();
}
}
}
要解决的问题:请问如何初始化IServer?
为了避免Client中出现硬编码的new表达式,也不在Client中使用Java反射机制,可以设计一个类IServerFactory,将Client构造器中的代码封装起来,使得Hand解除对那些具体类的依赖。[