写点什么

工厂模式(Factory Pattern)

发布于: 26 分钟前
工厂模式(Factory Pattern)

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

介绍


实现

  1. 创建一个 Shape 接口和实现 Shape 接口的实体类

  2. 定义工厂类 ShapeFactory

  3. FactoryPatternDemo 类使用 ShapeFactory 来获取 Shape 对象。它将向 ShapeFactory 传递信息(CIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型。


步骤 1

创建一个接口<kbd>Shape.java</kbd>:


// Shape.javapublic interface Shape {   void draw();}
复制代码

步骤 2

创建实现接口的实体类。


// Rectangle.javapublic class Rectangle implements Shape {    @Override   public void draw() {      System.out.println("Inside Rectangle::draw() method.");   }}
复制代码


// Square.javapublic class Square implements Shape {    @Override   public void draw() {      System.out.println("Inside Square::draw() method.");   }}
复制代码


// Circle.javapublic class Circle implements Shape {    @Override   public void draw() {      System.out.println("Inside Circle::draw() method.");   }}
复制代码

步骤 3

创建一个工厂<kbd>ShapeFactory.java</kbd>,生成基于给定信息的实体类的对象。


// ShapeFactory.javapublic class ShapeFactory {       //使用 getShape 方法获取形状类型的对象   public Shape getShape(String shapeType){      if(shapeType == null){         return null;      }              if(shapeType.equalsIgnoreCase("CIRCLE")){         return new Circle();      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){         return new Rectangle();      } else if(shapeType.equalsIgnoreCase("SQUARE")){         return new Square();      }      return null;   }}
复制代码

步骤 4

使用该工厂,通过传递类型信息来获取实体类的对象。


// FactoryPatternDemo.javapublic class FactoryPatternDemo {    public static void main(String[] args) {      ShapeFactory shapeFactory = new ShapeFactory();       //获取 Circle 的对象,并调用它的 draw 方法      Shape shape1 = shapeFactory.getShape("CIRCLE");       //调用 Circle 的 draw 方法      shape1.draw();       //获取 Rectangle 的对象,并调用它的 draw 方法      Shape shape2 = shapeFactory.getShape("RECTANGLE");       //调用 Rectangle 的 draw 方法      shape2.draw();       //获取 Square 的对象,并调用它的 draw 方法      Shape shape3 = shapeFactory.getShape("SQUARE");       //调用 Square 的 draw 方法      shape3.draw();   }}
复制代码

步骤 5

执行程序,输出结果:


Inside Circle::draw() method.Inside Rectangle::draw() method.Inside Square::draw() method.
复制代码


发布于: 26 分钟前阅读数: 2
用户头像

多读书多看报,少吃零食多睡觉 2018.08.07 加入

还未添加个人简介

评论

发布
暂无评论
工厂模式(Factory Pattern)