设计模式-简单工厂模式

简单工厂模式

其它创建型模式链接:

  1. 设计模式-工厂方法模式
  2. 设计模式-抽象工厂模式
  3. 设计模式-建造者模式
  4. 设计模式-单例模式
  5. 设计模式-原型模式

概述

简单工厂模式的定义

定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类

实现流程

首先要将需要创建的不同产品对象的相关代码封装到不同的类中,这些类称为具体产品类,而将公共代码进行抽象和提取封装在一个抽象产品类,每一个具体产品类都是抽象产品类的子类;然后提供一个工厂类用于创建各种产品,在产品类提供一个创建产品的工厂方法,该方法可以根据传入参数的不同创建不同具体产品对象。

该方法通常是静态方法,因此简单工厂模式又被称为静态工厂方法

简单工厂模式结构

简单工厂模式包含三个角色

Factory(工厂角色):工厂角色即工厂类,是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用,创建所需要的产品对象;工厂类提供静态方法,返回类型为抽象产品类型Product。

Product(抽象产品角色):是工厂类创建的所有对象的父类,封装各种产品对象的共有方法,可以提高系统灵活性,使得工厂类只需要定义一个通用的工厂方法,因为所有创建的具体产品的对象都是其子类对象。

ConcreteProduct(具体产品角色):它是简单工厂模式的创建目标,所有被创建的对象都充当这个角色的某个具体类的实现。每一个具体产品角色都继承了抽象产品角色,需要实现抽象产品中定义的抽象方法。

设计模式-简单工厂模式_第1张图片

案例

使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,例如圆形(Circle),矩形(Rectangle),和三角形(Triangle)等,每个几何图形均有绘制 draw() 和擦除 erase() 两个方法,要求在绘制不支持的几何图形时抛出一个UnsupportedShapeException异常,绘制类图并实现

类图

设计模式-简单工厂模式_第2张图片

实现

抽象产品代码

public abstract class Shape {
   
    /**
     * TODO 绘制方法
     * @author Alexander
     * @date 15:41 2021/5/11
     **/
    public abstract void draw();
    /**
     * TODO 擦除方法
     * @author Alexander
     * @date 15:42 2021/5/11
     **/
    public abstract void erase();
}

具体产品代码

public class Circle extends Shape {
   
    @Override
    public void draw() {
   
        System.out.println("绘制Circle图形");
    }

    @Override
    public void erase() 

你可能感兴趣的:(设计模式,设计模式,java,面试)