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

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

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

其他文章:

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

一、创建型设计模式

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

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

二、简单工厂模式

1.简单工厂模式定义

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

2.简单工厂模式角色

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

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

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

3.简单工厂模式的特点

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

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

4.简单工厂模式的类图

在这里插入图片描述

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;
        }
    }
}

测试结果及类图

在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值