工厂模式,是一种常见的设计模式,工厂模式是创建者模式一,通过工厂模式,调用者可以通过名称创建对应的对象,只关注接口就可以了。
具体实例
interface Service {
void dowork();
}
public ServiceFactory {
public Service makeService(String name) {
if (name.equal("A")) {
return new AService();
} else if (name.equal("B")) {
return new BService();
} else if ...
}
}
public AService implements Service {
public void dowork() {
}
}
public BService implements Service {
public void dowork() {
}
}
这是我们常见的简单工厂的实现方式,调用者使用简单工厂,能将构建过程集中在工厂中,业务逻辑类保持一致,但是当增加一种新的业务时,需要将增加工厂类代码。为了让工厂类也符合开闭原则,有抽象工厂的实现方式。
public AbstruactServiceFactory {
public Service makeService() {
try {
String name = Config.getClassName();
Class impl= Class.forName(ImplName);
return (Service)impl.newInstance()
} catch (Exception ex) {
...
}
}
}
这种方式从配置文件中读取类名,然后构造出新的对象,增加一个Service对象,就只增加其实现,使用时修改配置文件中的对象名。从而保持工厂对象的代码符合开闭原则。
小结
工厂模式使得逻辑类变得职责单一,变化封装在工厂中,增加了代码的可复用性。
网友评论