工厂设计模式可分为: 简单工厂模式 工厂方法模式 抽象工厂模式 第一篇我们来聊聊
最近想学习一些设计模式的知识,所以在网上参考了一些文章和例子,为了尊重原创,这里先感谢原创作者的辛苦付出,如对原创作者造成不利的影响,请联系本人博客。 晨鸣的博客
理解 假设某些实例具有相同的方法,可以根据参数的不同返回不同的实例,被创建的实例通常都具有共同的父类,那么可以考虑使用简单设计模式来实现。
例如可以实用简单工厂模式设计一个可以创建不同几何形状(如圆形、方形和三角形等)的绘图工具,每个几何图形都具有绘制draw()和擦除erase()两个方法。
例子(摘自晨鸣的博客):
//图形接口 public interface Shape { void draw(); void erase(); } //圆形 public class RoundShape implements Shape { @Override public void draw() { System.out.println("画了一个圆形!"); } @Override public void erase() { System.out.println("擦除一个圆形!"); } } //三角形 public class TriangleShape implements Shape { @Override public void draw() { System.out.println("画了一个三角形!"); } @Override public void erase() { System.out.println("擦除一个三角形!"); } } //工厂类 public class ShapeFactory { public static Shape getShape(String type) { Shape shape = null; if (type.equalsIgnoreCase("ROUND")) { shape = new RoundShape(); } else if (type.equalsIgnoreCase("TRIANGLE")) { shape = new TriangleShape(); } return shape; } }客户端测试代码如下
public class Client { public static void main(String[] args) { Shape shape; shape = ShapeFactory.getShape("round"); shape.draw(); shape.erase(); shape = ShapeFactory.getShape("triangle"); shape.draw(); shape.erase(); } }运行结果如下
画了一个圆形! 擦除一个圆形! 画了一个三角形! 擦除一个三角形!总结 简单工厂模式中工厂类的职责太重,一旦不能工作将影响整个系统,且如果添加过多的产品,工厂类中的逻辑就过于复杂。所以简单工厂模式适用于逻辑简单,且需要创建对象较少的情况。