美文网首页
逸笔记-设计模式-创建型模式-建造者模式

逸笔记-设计模式-创建型模式-建造者模式

作者: lovefy | 来源:发表于2023-03-29 15:53 被阅读0次

基本介绍:

建造者模式又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象建造者模式是一步一步建造一个复杂对象,它允许用户只通过指定复杂对象的类型和内容就可以建造他们,用户不需要指定内部的具体构建细节
建造者模式四个角色:
Product(产品角色):一个具体的产品对象
Builder(抽象建造者):创建一个Product对象的各个部件指定的接口/抽象类
ConcreteBuilder(具体建造者):实现接口,构建和装配各个部件
Director(指挥者):构建一个使用Builder的对象,它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程

需求

我们有一款手机需要定制,需要经过芯片制作,电池制作,外壳制作,组装等,而且手机的厂商不是唯一一个,这个时候我们就需要用到建造者模式
首先我们需要一个产品手机

public class Phone {
    /**
     * 电池
     */
    private String cell;

    /**
     * 芯片
     */
    private String slug;

    /**
     * 手机壳
     */
    private String phoneShell;

    public String getCell() {
        return cell;
    }

    public void setCell(String cell) {
        this.cell = cell;
    }

    public String getSlug() {
        return slug;
    }

    public void setSlug(String slug) {
        this.slug = slug;
    }

    public String getPhoneShell() {
        return phoneShell;
    }

    public void setPhoneShell(String phoneShell) {
        this.phoneShell = phoneShell;
    }
}

抽象的手机制作商

public abstract class PhoneBuilder {

    protected Phone phone = new Phone();

    /**
     *  制造芯片
     */
    public abstract void makeCell();

    /**
     *  制造电池
     */
    public abstract void makeSlug();

    /**
     *  制造手机壳
     */
    public abstract void makePhoneShell();



    public Phone assemblePhone(){
        return phone;
    }
}

具体的手机制作商 比如华为,苹果

/**
 *  华为制造商
 */
public class HuaweiPhoneBuilder extends PhoneBuilder{

    @Override
    public void makeCell() {
        System.out.println("制造麒麟9200芯片");
    }

    @Override
    public void makeSlug() {
        System.out.println("制造6000ma电池");

    }

    @Override
    public void makePhoneShell() {
        System.out.println("制造米亚白手机壳");
    }
}
/**
 *  苹果制造商
 */
public class IPhoneBuilder extends PhoneBuilder{

    @Override
    public void makeCell() {
        System.out.println("制造A17芯片");
    }

    @Override
    public void makeSlug() {
        System.out.println("制造苹果电池");

    }

    @Override
    public void makePhoneShell() {
        System.out.println("制造苹果手机壳");
    }
}

然后我们需要一个指挥者,根据市场需求制作那款手机

public class PhoneDerector {

    private PhoneBuilder phoneBuilder;

    public PhoneDerector(PhoneBuilder phoneBuilder) {
        this.phoneBuilder = phoneBuilder;
    }

    public void setHouseBuilder(PhoneBuilder phoneBuilder){
        this.phoneBuilder=phoneBuilder;
    }

    public Phone createPhone(){
        phoneBuilder.makeCell();
        phoneBuilder.makeSlug();
        phoneBuilder.makePhoneShell();
        return phoneBuilder.assemblePhone();
    }
}

然后我们就可以通过传入不同的制作商获取到不同的手机产品了

@Test
public void Builder(){
    IPhoneBuilder iPhoneBuilder = new IPhoneBuilder();
    HuaweiPhoneBuilder huaweiPhoneBuilder = new HuaweiPhoneBuilder();
    Phone iphone= new PhoneDerector(iPhoneBuilder).createPhone();
    Phone huawei = new PhoneDerector(huaweiPhoneBuilder).createPhone();
}
image.png

相关文章

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 设计模式-构建者模式

    概念 建造者模式(英:Builder Pattern)是一种创建型设计模式,又名:生成器模式。GOF 给建造者模式...

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 23天学习23种设计模式——建造者模式

    是什么——什么是建造者模式 建造者模式(Builder Pattern),是一种对象创建型设计模式。它将一个复杂对...

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • 手撸golang 创建型设计模式 建造者模式

    手撸golang 创建型设计模式 建造者模式 缘起 最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔...

  • 设计模式

    设计模式分为 3 大类型共 23 种:创建型:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型:...

  • 简单工厂模式

    创建型设计模式: 简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、原型模式和建造者模式。 统共六种。 本此分享...

网友评论

      本文标题:逸笔记-设计模式-创建型模式-建造者模式

      本文链接:https://www.haomeiwen.com/subject/nlvfddtx.html