设计模式-工厂模式

设计模式-工厂模式

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

参考资料

主要参考了这篇文章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();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、工厂模式简介 意图定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进...
    怡红快绿阅读 612评论 0 0
  • 设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...
    edison0428阅读 264评论 0 0
  • 在最初的学习过程中对把简单的东西搞得复杂的现象很不理解,随着经验的增长,慢慢发现我所理解的“简单”其实是针对设计的...
    吃茶泡饭丶阅读 372评论 0 0
  • 什么善不善,恶不恶。清不清,浊不浊?我从未把那些功利美丑放在心上。你又何必,为我执着这些。
    鱼羡窦青阅读 143评论 0 0
  • 秋日余晖西下 画未完成的画 笔下你的脸颊 似有说不完的话 落叶被风吹响 是离别的悲伤 你远去的方向 是我到不了的远...
    夜游星人阅读 247评论 3 2