设计模式-工厂模式

设计模式-工厂模式

最近学习到工厂模式,记录下学习过程

参考资料

主要参考了这篇文章https://blog.51cto.com/liukang/1981900

核心思想

工厂模式主要是为了满足开闭原则,开闭原则可以理解为,流水线生产,需要产品就直接获取成品,屏蔽掉创建过程,提高效率。

例子

仍然是做一个画图软件,可以画矩形、三角形和圆形等,每一种图形都用一个类来管理:

  • Rectangle
  • Circle
  • Triangle
    每个类都有各自的draw()方法,共同实现Shape接口。

Shape.java


public interface Shape {
   void draw();
}
Rectangle.java

public class Rectangle implements Shape {
   @Override
   public void draw() {
      System.out.println("Draw a rectangle.");
   }
}
Triangle.java

public class Triangle implements Shape {
   @Override
   public void draw() {
      System.out.println("Draw a triangle.");
   }
}
Circle.java

public class Circle implements Shape {
   @Override
   public void draw() {
      System.out.println("Draw a circle.");
   }
}

以上几个类都没有变化,有变化的是工厂类,工厂类也采用基于接口的设计,由不同的具体工厂类负责相应对象的创建:

ShapeFactory.java

public interface ShapeFactory {
    Shape getShape();
}
RectangleFactory.java

public class RectangleFactory implements ShapeFactory {
    public Shape getShape() {
        return new Rectangle();
    }
}
CircleFactory.java

public class CircleFactory implements ShapeFactory{
    public Shape getShape() {
        return new Circle();
    }
}
Triangle.Factory.java

public class CircleFactory implements ShapeFactory{
    public Shape getShape() {
        return new Circle();
    }
}

那么在需要某个形状的时候,就通过相应的具体工厂类创建即可:

Client.java

public class Client {
    public static void main(String[] args) {
        ShapeFactory factory = new CircleFactory();
        Shape c = factory.getShape();
        c.draw();
    }
}

你可能感兴趣的:(设计模式-工厂模式)