属于创建型设计模式,需要生成的对象叫做产品 ,生成对象的地方叫做工厂 。
也可以说是用于策略选择。不同的选择为产品。
工厂模式和策略模式有一定的类似。在实际应用中,我们常见单例模式和动态类型作为工厂生成产品的方法。
//以下使用了Singleton单态模式
if (factory == null) {
synchronized(initLock) {
if (factory == null) {
......
try {
//动态转载类
Class c = Class.forName(className);
factory = (ForumFactory)c.newInstance();
}catch (Exception e) {
return null;
}
}
}
}
1.简单工厂模式
一个工厂类。一个产品接口。多个实例产品类实现共同的产品接口。
在工厂类中通过if else选择创建不同的产品。
缺点:工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则
2.工厂方法模式
一个工厂接口,多个工厂实例类。一个产品接口,多个产品实例类。各个工厂类中,都对应一个获得产品接口的方法。用户决定使用哪个工厂。
比起简单工厂模式,将工厂类的职责进行了切分。这里可以和策略模式配合,通过策略决定采用那个具体工厂类。
3.抽象工厂模式
对工厂方法进行扩展。各个工厂类中,再增加一个获得接口B实例的方法。