为什么要用工厂模式

友情提示:
本人还是学生,有什么理解上的偏差欢迎大家指出。
不过写博客是为了表达意思,如果有格式上的小错误大概率是因为我懒得改,请不要深究。

  1. 简单工厂模式
    ==> 从创建许多不同的对象,变成往一个方法中传入不同的参数
public static void main(String[] args) {
    // 想画100个的图形,
    // 不用工厂模式:
    Shape s1 = new Circle();
    s1.draw();
    Shape s2 = new Square();
    s2.draw();
    .
    .
    Shape s100 = new Circle();
    s100.draw();

    // 而使用工厂模式的话
    ShapeFactory shapeFactory = new ShapeFactory();
    for (int i = 0; i < 100; i++) {
          Shape shape1 = shapeFactory.getShape(i);
          shape1.draw();
    }
 }
  1. 工厂方法模式
    下面两种看起来没什么区别,甚至前者的还不需要实现抽象工厂类,但是,
    ==> 如果想让这个通用画图器能够画三角,前者需要直接改核心代码,后者只需要新建一个Trianglefactory implements ShapeFactory,就可以继续用p2的代码了
// 想做一个**通用**画图形工具
public void readPicture(String type) {
      // 不用工厂方法模式

      if(type.equals("Circle")) {
            Shape s = ShapeFactory.getShape("Circle");
            s.draw();
      } else {
            Shape s = ShapeFactory.getShape("Square"); 
            s.draw();
      }

      // 用工厂方法模式
      // p1
      ShapeFactory factory=new CircleFactory();
      
      { // p2
      Shape=factory.getShape();
      shape.draw();
      }
}

参考:
菜鸟教程:工厂模式
掘金

上一篇:Scala实验二——2.模拟图形绘制


下一篇:Java单体应用 - 架构模式 - 03.设计模式-01.工厂模式