设计模式总结链接
工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。
工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
一。简解
工厂方法模式是在简单工厂模式基础上做了一点改进,生产某一类方法的工厂,不仅仅局限于某个(简单工厂模式是生产某个)。
二。用途
主要是用来根据需求生产某一类产品,进一步实现对象创建和使用之间的解耦,通过接口或者抽象类的方式去实现不同对象的相同调用(此处涉及面向对象的里氏代换原则),比起简单工厂模式适应性更广,更易实现同类产品的扩展。
三。实例</font>
用户需要某种产品,通过工厂类生产某种产品,将这种产品抽象为接口,扩展时可以通过实现接口进行扩展。
测试类
package zsl.工厂方法模式;
public class Main {
public static void main(String[] args) {
ProdectFactory myFactory = new ProdectFactory();
Prodect prodect = myFactory.prodectInstance("我要的产品");
prodect.sayName();
}
}
产品接口类
package zsl.工厂方法模式;
public interface Prodect {
/**
* 说出该产品的名字
*/
public void sayName();
}
产品工厂类
package zsl.工厂方法模式;
public class ProdectFactory {
/**
* 根据需求生产一个产品
* @param name
* @return
*/
public Prodect prodectInstance(String name){
return new ProdectInstance(name);
}
}
产品实类
package zsl.工厂方法模式;
public class ProdectInstance implements Prodect{
private String name;
public ProdectInstance(String name) {
this.name = name;
}
/**
* 实现接口的方法
*/
@Override
public void sayName() {
System.out.println(this.name);
}
}
四。优点
首先工厂方法基本继承了简单工厂的优点(除了简单,这可是简单工厂独有的特征 (∩_∩))
其次,工厂方法加入了生产一类的产品功能,这个相当于是对简单工厂中实例进行了一种接口的封装,对外提供接口访问,进一步实现了,使用、实现和生产之间的解耦。
加入接口的封装,极大的提高了对某类产品的扩展性。
五。不足
生产一类产品,什么意思,对于不同类产品的生产不是很方便,这也是这个模式的一点小不足之处。不足归不足,达到需求就好了,想用好的,是要代价的。