设计模式-工厂模式

字数 254阅读 14

设计模式-工厂模式

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

参考资料

主要参考了这篇文章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();
    }
}

推荐阅读更多精彩内容

  • 说明:文章所有内容均截选自实验楼教程【Java设计模式】,想查看学习设计模式,查看教程完整内容的,点击即可进入页面...
  • 一、工厂模式简介 意图定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进...
  • 设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...
  • 在最初的学习过程中对把简单的东西搞得复杂的现象很不理解,随着经验的增长,慢慢发现我所理解的“简单”其实是针对设计的...
  • 什么善不善,恶不恶。清不清,浊不浊?我从未把那些功利美丑放在心上。你又何必,为我执着这些。