IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 理解设计模式——建造者模式 -> 正文阅读

[网络协议]理解设计模式——建造者模式

在这里插入图片描述

理解设计模式——建造者模式

定义

????提供一个建造者类负责复杂对象构建,将其复杂的构建和其表示分离,使用同一构建过程可以创建不同的表示。

调用方式

在这里插入图片描述

实现方法

????建造者模式主要由以下四种角色构成:

  • Product:产品即最终生成的对象
  • Builder:抽象建造者,定义创建产品的步骤,规范产品的组成
  • ConcreteBuilder:实际建造者,实现Builder接口,完成复杂产品的各个部件的具体创建方法
  • Director:指挥者,调用建造者的创建方法,完成对象的创建。
    在这里插入图片描述
    ????上图是建造者模式的基本结构,当然实际运用中会产生一定的变化。接下来用简单代码演示:
// 传入建造者,输出产品
public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public Product construct() {
        return builder.getProduct();
    }
}
//建造者公共模板
public interface Builder {

    void buildA();

    void buildB();

    void buildC();

    void buildD();

    Product getProduct();
}

//负责建造具体产品
public class ConcreteBuilder implements Builder {

    private Product product;

    @Override
    public void buildA() {
        product.setModuleA("A part");
    }

    @Override
    public void buildB() {
        product.setModuleA("B part");
    }

    @Override
    public void buildC() {
        product.setModuleA("C part");
    }

    @Override
    public void buildD() {
        product.setModuleA("D part");
    }

    @Override
    public Product getProduct() {
        return product;
    }
}
//产品
public class Product {

    String moduleA;
    String moduleB;
    String moduleC;
    String moduleD;

    public String getModuleA() {
        return moduleA;
    }

    public void setModuleA(String moduleA) {
        this.moduleA = moduleA;
    }

    public String getModuleB() {
        return moduleB;
    }

    public void setModuleB(String moduleB) {
        this.moduleB = moduleB;
    }

    public String getModuleC() {
        return moduleC;
    }

    public void setModuleC(String moduleC) {
        this.moduleC = moduleC;
    }

    public String getModuleD() {
        return moduleD;
    }

    public void setModuleD(String moduleD) {
        this.moduleD = moduleD;
    }
}
//客户端调用建造者模式
public class Client {
    public static void main(String[] args) {
        ConcreteBuilder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        Product product = director.construct();
    }
}

使用场景

  1. 建造者模式和工厂模式都可用于复杂对象的创建,两者相同点在于能够对复杂对象的创建过程高内聚。两者不同点在于,工厂模式是为了获得产品,无需关心产品组成细节,而建造者模式是为了创建产品,控制产品组成细节。并且建造者模式中有Director的存在,能更精确的控制产品的创建流程。
  2. 建造者模式适用于不同Product对象间,具有相同的组成构建顺序
  3. 生产对象的构造器中含有大量可选参数,采用建造者模式可灵活控制产品组成,推荐使用。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 19:15:44  更:2022-01-30 19:16:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:45:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码