推广

建造者模式(Builder)

iseeyu2年前 (2024-02-21)推广136

建造者模式.png

定义:将一个复杂对象的构造与表示分离,同样的构建过程可以创建出不同的表示。

将一个复杂对象拆分成多个简单对象,然后通过组合拼成一个完整对象表示,简单对象可以灵活选择,最终导致相同的构建过程,创建出的表示会根据意愿表示出各种不同结果

优点:

  • 封装性好,构建和表示分离
  • 解耦
  • 建造者对创建过程细化,客户端不必知道产品内部组成细节

缺点:

  • 产品的组成部分必须相同
  • 如果产品内部发生变化,建造者也要同步修改,维护成本大

建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂模式更注重零部件的创建过程,但两者可以结合使用。

模式的实现

复杂产品对象:由多个简单部件组成

package com.yang.builder;

import lombok.Data;

/**
 * Iphone 包含多个组成部件的复杂对象
 */
@Data
public class Iphone {
    //电池
    private Battery battery;
    //显示屏
    private Screen screen;
    //显示产品特性
    public void show() {
        battery.print();
        screen.print();
        System.out.println("iphone组装完成");
    }
}

组成部件A:

package com.yang.builder;
//具体产品:电池
public class Battery {
    public void print() {
        System.out.println("电池生产完成");
    }
}

组成部件B:

package com.yang.builder;
//具体产品:屏幕
public class Screen {
    public void print() {
        System.out.println("显示屏生产完成");
    }
}

抽象建造者:包含多个部件的抽象创建方法,通常还有一个返回复杂对象的具体方法

package com.yang.builder;
abstract class Builder {
    //创建产品对象
    protected Iphone iphone = new Iphone();
    public abstract void buildBattery();
    public abstract void buildScreen();
    //返回产品
    public Iphone getResult(){
        return iphone;
    }
}

具体建造者:完成复杂部件的各个组成部件的具体创建方法

package com.yang.builder;

//具体建造者:实现了抽象建造者接口。
public class BuilderImpl extends Builder {
    @Override
    public void buildBattery() {
        iphone.setBattery(new Battery());
    }

    @Override
    public void buildScreen() {
        iphone.setScreen(new Screen());
    }
}

指挥者:

package com.yang.builder;

public class Director {
    private final Builder builder;
    public Director(Builder builder){
        this.builder = builder;
    }
    //产品组装方法
    public Iphone construct(){
        builder.buildBattery();
        builder.buildScreen();
        return builder.getResult();
    }
}

客户端:

package com.yang.builder;

public class Client {
    public static void main(String[] args) {
        Builder builder = new BuilderImpl();
        Director director = new Director(builder);
        Iphone iphone = director.construct();
        iphone.show();
    }
}
电池生产完成
显示屏生产完成
iphone组装完成

建造者模式和工厂模式的区别

  • 建造者模式更加注重的是对象创建的顺序,一个复杂对象通过不同的组装顺序,最终的表现也不一样,工厂模式注重的是对象的创建,创建出来的对象都一样。

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57603.html

相关文章

新零售背景下(快消品营销)

新零售背景下(快消品营销)

当前,快消品进入营销模式转换的关键时期。企业必须要创新、变革新营销模式,以适应当前的市场需要。 产品+顾客价值 当前,快消品迫切需要由以往的没有顾客价值、或不注重顾客价值,转向以打造顾客价值为中心的新营销模式。 顾客价值就是顾客对企业、产品的贡献度。快消品已经走过了简单市场覆盖、...

文化IP营销案例 | 一座城、一位艺术家、一间酒店

文化IP营销案例 | 一座城、一位艺术家、一间酒店

编者按:“基于的优势是最根本的、最难以替代和模仿的、最持久的和最核心的竞争优势”。--竞争战略之父迈克尔·波特在消费升级和互联网化的背景下,传统的构建路径、方式和方法都面临着极大的挑战。做为最早提出“文化IP”理论的WING励智品牌,用“文化IP”的理念,将品牌前置!让产品...

小编分享新网站如何做好seo优化。

小编分享新网站如何做好seo优化。

搜索引擎优化,已经成为了各大企业进行推广以及品牌宣传的重要手段。了解seo技术,并不是简单的建议而是经过时间的理解,经过时间的探索,足够耐心细致的工作。明确优化步骤,更好地为您的优化进行提供帮助。 首先,谈谈关键词分析,也就是所谓的关键词定位。关键词在搜索引擎中至关重要,是...

如何才能制订出一个适合的营销策划方案

案有好有坏,什么叫好?什么又叫坏呢?再优秀的策划案,不适用于自身企业,那么对于自己的企业来说,它就是坏的策划案。每个企业的经营业务不同,占有率不同,发展目标也不一样,只有适合自身企业的企业策划才是好的营销策划案。那么,对于企业来说,如何制订出一个适合自身的营销策划方案呢?我...

深度拆解品牌战略:讲一个好故事,说简单也不简单

深度拆解品牌战略:讲一个好故事,说简单也不简单

编辑导语:企业的长远发展离不开战略,品牌战略是企业基于平台的差异性,通过价值主张创造比较优势,以满足客户的需求。本篇文章为我们深度拆解了品牌战略,从品牌战略的源头到实操为我们分享了品牌战略的详细,一起来看。 品牌战略是企业基于...

网站不被百度录入的原因。

网站不被百度录入的原因。

今日营销及传达专家习戈为咱们共享网站不被百度录入的原因,新网站不被百度快照录入是许多SEO优化人员最头疼的,现在百度Spider抓取新链接的途径有两个,一是自动出击发现抓取,二便是从百度站长渠道的链接提交东西中获取数据。 其间经过自动推送功用\"收\"上来的数据最受百度Spider的欢迎。...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片