• 设计模式java版本阅读笔记 一 创建型


    六个创建型模式

    1. 简单工厂模式

            1.简单工厂模式:定义一个工厂类,他可以根据不同的参数返回不同的类的实例 ,被创建的实例通常都有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工             厂模式被称为静态工厂方法模式,他属于创建型的模式

                

             2.构成

                   Factory 工厂角色:工厂类 ,简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑 可以被直接调用创建所需要的产品对象,返回类型是product

                    Product 抽象产品角色 :工厂类所创建的产品的父类 封装了各种产品对象的共有发昂发

                   ConCreteProduct 具体产品角色:简单工厂的创建目标 ,所有被创建的对象都充当这个角色的某个具体的实例,都继承了抽象产品角色 

            

    1. 工厂方法模式
       

                    1.定义:定义一个用于创建对象的接口,让子类决定将哪一个 类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂式 (Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式(是因为实例 初始化太复杂了 你并不知道 每个实例的构建明细,包含一些复杂的初始化这些不是每个工厂都不一样的

     

     Product(抽象产品):它是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品 对象的公共父类。

    ConcreteProduct(具体产品):它实现了抽象产品接口,某种类型的具体产品由专门的具体工 厂创建,具体工厂和具体产品之间一一对应。

     Factory(抽象工厂):在抽象工厂类中,声明了工厂方法(Factory Method),用于返回一个产品。抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口。

    ConcreteFactory(具体工厂):它是抽象工厂类的子类,实现了抽象工厂中定义的工厂方法,并可由客户端调用,返回一个具体产品类的实例。

    扩展 通过这种方式对客户端调用进行隐藏   可以通过配置预先觉得初始化哪一个 

    1. //改为抽象类
    2. abstract class LoggerFactory {
    3. //在工厂类中直接调用日志记录器类的业务方法writeLog()
    4. public void writeLog() {
    5. Logger logger = this.createLogger();
    6. logger.writeLog();
    7. }
    8. public abstract Logger createLogger();
    9. }

    1. 抽象工厂模式

                    

     

    AbstractFactory(抽象工厂):它声明了一组用于创建一族产品的方法,每一个方法对应一种 产品。

    ConcreteFactory(具体工厂):它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。

    AbstractProduct(抽象产品):它为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法。

    ConcreteProduct(具体产品):它定义具体工厂生产的具体产品对象,实现抽象产品接口中声 明的业务方法

    开闭原则的倾斜性  涉及到一个问题这里  我要是想扩充类型怎么办呢

     解决不了这个问题

    1. 单例模式
    2. 原型模式
    3. 建造者模式

  • 相关阅读:
    Linux: 进程(控制)
    Linux ARM平台开发系列讲解(调试篇) 1.6.4 NVIDIA AGX Xavier以太网MAC TO MAC模式
    UE4 C++:Actor与Component的创建、销毁
    049:vue+openlayers鼠标pointermove显示城市名片(示例代码)
    流畅的Python读书笔记(二)序列:元组
    1-(2-甲氧基乙基)-3-乙基咪唑三氟甲基磺酸盐{[C22O1IM][TfO]}离子液体
    网络与信息安全基础知识 (软件设计师笔记)
    前端模块化导入导出
    在Tomcat中启用虚拟线程特性
    昨天面试一个武大的,10年经验,薪资只要1万二!
  • 原文地址:https://blog.csdn.net/weixin_38845058/article/details/127425392