Java设计模式--创建型设计模式-简单工厂模式

Java设计模式–创建型设计模式-简单工厂模式

从这一专栏开始将学习设计模式,上课学习和自己总结归纳的笔记将总结出来供大家参考。
参考书籍:《设计模式就该这样学》

其他文章:

Java设计模式-UML类图 Java设计模式-七大架构设计原则-开闭原则
Java设计模式-七大架构设计原则-依赖倒置原则 Java设计模式-七大架构设计原则-单一职责原则
Java设计模式-七大架构设计原则-接口隔离原则 Java设计模式-七大架构设计原则-最少知道原则(迪米特法则)
Java设计模式-七大架构设计原则-里氏替换原则和合成复用原则 Java设计模式-创建型设计模式-简单工厂模式
Java设计模式-创建型设计模式-工厂方法模式(工厂模式) Java设计模式-创建型设计模式-抽象工厂模式
Java设计模式-创建型设计模式-建造者模式 Java设计模式-创建型设计模式-原型模式
Java设计模式-创建型设计模式-单例模式 Java设计模式-结构型设计模式-适配器模式
Java设计模式- 结构型设计模式-享元模式 Java设计模式- 结构型设计模式-外观模式
Java设计模式- 结构型设计模式-桥接模式 Java设计模式-结构型模式设计模式-组合模式
Java设计模式-行为型设计模式-观察者模式

文章目录

  • Java设计模式--创建型设计模式-简单工厂模式
    • 一、创建型设计模式
    • 二、简单工厂模式
      • 1.简单工厂模式定义
      • 2.简单工厂模式角色
      • 3.简单工厂模式的特点
      • 4.简单工厂模式的类图
      • 5.简单工厂模式的代码实现

一、创建型设计模式

创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离,对客户端代码需要调用对象的时候隐藏了类的实例化的创建细节

其中包括:简单工厂模式(不在GoF23种设计模式中)、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式。

二、简单工厂模式

1.简单工厂模式定义

简单工厂模式:又叫做静态工厂方法模式(创建实例的方法通常是静态的),简单来说,简单工厂模式用一个具体的工厂类,可以生产多个不同的产品,属于创建型模式,但是不在GoF23种设计模式之内。

2.简单工厂模式角色

简单工厂:是简单工厂的核心,负责实现创建所有实例的内部逻辑。

抽象产品:是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。

具体产品:是简单工厂模式的创建目标

3.简单工厂模式的特点

优点:结构简单,调用方便,对于外界给定的信息可以很方便地创建出响应的产品。

缺点:工厂类单一,负责所有产品的创建,当产品基数增多的时候,工厂类的代码非常臃肿,违背了开闭原则。

4.简单工厂模式的类图

Java设计模式--创建型设计模式-简单工厂模式_第1张图片

5.简单工厂模式的代码实现

public class Client {
    public static void main(String[] args) {
        Iproduct iproduct = SimpleFactory.makeProduct(1);
        iproduct.doSomething();
    }

    /**
     * 抽象产品
     */
    public interface Iproduct{
        void doSomething();
    }

    /**
     * 具体产品A
     */
    static class ProductA implements Iproduct{
        @Override
        public void doSomething() {
            System.out.println("我是产品A");
        }
    }
    /**
     * 具体产品B
     */
    static class ProductB implements Iproduct{
        @Override
        public void doSomething() {
            System.out.println("我是产品B");
        }
    }

    final class Const{
        static final int PRODUCT_A=0;
        static final int PRODUCT_B=1;
    }

    /**
     * 简单工厂
     */
    static class SimpleFactory{
        public static Iproduct makeProduct(int kind){
            switch (kind){
                case Const.PRODUCT_A:
                    return new ProductA();
                case Const.PRODUCT_B:
                    return new ProductB();
            }
            return null;
        }
    }
}

测试结果及类图

Java设计模式--创建型设计模式-简单工厂模式_第2张图片

Java设计模式--创建型设计模式-简单工厂模式_第3张图片

你可能感兴趣的:(Java设计模式,java,架构,设计模式,简单工厂模式)