美文网首页
23种设计模式之建造者模式

23种设计模式之建造者模式

作者: 阿跳爱学习 | 来源:发表于2018-12-27 00:12 被阅读0次

优点:不必知道内部实现,解耦合,可扩展性高。
缺点:如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

使用场景:对某个对象构造复杂的情况下使用。

主要分两部分:
1.构建者(Bulider)
2.组装者(Director)

建造者,主要是构建者和组装者的分工解耦,比如我要建造一台iphone手机,手机有很多的零部件,比如主板、摄像头、电池、外壳等等各种小零件,这些东西构建者(Bulider)负责把它们做出来,而组装者(Director)则负责把它们组装起来,形成一台手机。

准备工作

创建手机各个部件的实体类,例子从简,分外壳和主板。

外壳类(Shell):

/**
 * 这是一个手机外壳类
 */

public class Shell {
    private String name;

    public Shell(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

主板类(Motherboard):

/**
 * 这是一个手机主板类
 */

public class Motherboard {
    private String name;

    public Motherboard(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

手机类(Phone):

/**
 * 这是一个手机类
 */

public class Phone {

    private Motherboard motherboard;
    private Shell shell;

    public Motherboard getMotherboard() {
        return motherboard;
    }

    public void setMotherboard(Motherboard motherboard) {
        this.motherboard = motherboard;
    }

    public Shell getShell() {
        return shell;
    }

    public void setShell(Shell shell) {
        this.shell = shell;
    }
}

步入主题

构建者

创建一个构建者接口(PhoneBulider),主要工作用于实现构建主板和构建外壳:

/**
 * 这是一个构建者接口
 */

public interface PhoneBulider {
    Motherboard buliderMotherboard();

    Shell buliderShell();
}

创建一个构建者实现类(IphoneBulider):

/**
 * 这是苹果手机构建实现类
 */

public class IphoneBulider implements PhoneBulider{

    @Override
    public Motherboard buliderMotherboard() {
        Log.d("TAG","构建苹果手机主板");
        return new Motherboard("苹果手机主板");
    }

    @Override
    public Shell buliderShell() {
        Log.d("TAG","构建苹果手机外壳");
        return new Shell("苹果手机外壳");
    }
}

然后步入组装。

组装者

先创建一个组装者接口(PhoneDirector):

/**
 *这是一个组装者接口
 */

public interface PhoneDirector {
    Phone directorPhone();
}

再创建一个组装者实现类:

/**
 * 这是一个苹果手机组装实现类
 */

public class IphoneDirector implements PhoneDirector {

    private PhoneBulider phoneBulider;

    public IphoneDirector(PhoneBulider phoneBulider){
        this.phoneBulider = phoneBulider;
    }


    @Override
    public Phone directorPhone() {
        //让构建者构建好主板与外壳
        Motherboard motherboard = phoneBulider.buliderMotherboard();
        Shell shell = phoneBulider.buliderShell();

        //构建好之后进行组装
        Phone phone = new Phone();
        phone.setMotherboard(motherboard);
        phone.setShell(shell);

        return phone;
    }
}

构建者和组装者都写完了,最后调用试试。

/**
 * 这是调用者
 */

public class MainActivity extends FragmentActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PhoneDirector phoneDirector = new IphoneDirector(new IphoneBulider());
        Phone phone = phoneDirector.directorPhone();
        Log.d("TAG", "组装好的Phone = " + phone + "\nMotherboard = " + phone.getMotherboard().getName() + "\nshell = " + phone.getShell().getName());
    }
}
image.png

已完成测试!有不对的地方欢迎指出,感恩。

相关文章

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

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

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • Javaの设计模式之建造者模式

    推荐阅读:《设计模式之禅》 今早早起,刚刚出炉,哈哈 BuilderPattern 设计模式之建造者模式 Demo...

  • 设计模式之建造者模式

    设计模式之建造者模式 建造者模式 属于 创建型模式,提供一种创建对象的最佳方式。 创建型模式 指不是直接使用ne...

  • Retrofit

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

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

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

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

网友评论

      本文标题:23种设计模式之建造者模式

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