首页 > 其他分享 >建造者模式

建造者模式

时间:2022-11-23 15:44:07浏览次数:42  
标签:return name Battery Screen 建造 模式 public Cpu

某个对象的组件构成复杂,我们将组件的制造与装配分开来。

  组件的制造者叫做Builder

  组件的装配者叫做Director

比如:手机由屏幕、电池、主板三个子组件构成,那我把制作子组件的人叫做PhoneBuilder,把组装它们成为手机的人叫做PhoneDirector。

  定义组装者接口和构建者接口后,通过不同的实现类,可以制作不同的手机,(包括组件的不同和组装方式不同)。


 

 

实现思路:

    (LurenjiaPhoneBuilder)构建者制作手机的组件(Screen、Battery、Cpu),LurenjiaPhoneDirector(组装者)从(LurenjiaPhoneBuilder)构建者那拿到子组件,Client从LurenjiaPhoneDirector那拿到手机。

 

 

 手机 Phone :

public class Phone {
    private Screen screen;//屏幕
    private Battery battery;//电池
    private Cpu cpu;//主板

    public Phone() { }

    public Screen getScreen() { return screen; }

    public void setScreen(Screen screen) { this.screen = screen; }

    public Battery getBattery() { return battery; }

    public void setBattery(Battery battery) { this.battery = battery; }

    public Cpu getCpu() { return cpu; }

    public void setCpu(Cpu cpu) { this.cpu = cpu; }
}

屏幕 Screen :

public class Screen {
    private String name;
    public Screen(String name){ this.name=name; }
    public String getName() { return name;}
}

电池 Battery :

public class Battery {
    private String name;
    public Battery(String name){ this.name=name;}
    public String getName() { return name; }
}

主板 Cpu :

public class Cpu {
    private String name;
    public Cpu(String name){   this.name=name; }
    public String getName() {   return name; }
}

构建者接口 PhoneBuilder :实现类需要实现创建屏幕、电池、主板

public interface PhoneBuilder {
    Screen creatScreen();
    Battery creatBattery();
    Cpu creatCpu();
}

构建者 LurenjiaPhoneBuilder :

public class LurenjiaPhoneBuilder implements PhoneBuilder{

    @Override
    public Screen creatScreen() { return new Screen("屏幕 by Lurenjia"); }

    @Override
    public Battery creatBattery() { return new Battery("电池 by Lurenjia"); }

    @Override
    public Cpu creatCpu() { return new Cpu("主板 by Lurenjia"); }
}

组建者接口 PhoneDirector 及其实现类  LurenjiaPhoneDirector:

public interface PhoneDirector {
    Phone creatPhone();//组装一台手机
}

/**
 * 路人甲组装厂
 */
class LurenjiaPhoneDirector implements PhoneDirector{
    private PhoneBuilder phoneBuilder;//从组件制作者拿组件

    public LurenjiaPhoneDirector(PhoneBuilder phoneBuilder) {
        this.phoneBuilder = phoneBuilder;
    }
    @Override
    public Phone creatPhone() {
        Phone phone = new Phone();
        phone.setBattery(phoneBuilder.creatBattery());
        phone.setScreen(phoneBuilder.creatScreen());
        phone.setCpu(phoneBuilder.creatCpu());
        return phone;
    }
}

客户来咯:

public class Client {
    //我想要个手机,要Lurenjia制作的组件,Lurenjia组装的那种!
    public static void main(String[] args) {
        //1.通过拿货来源,创建一个组装者。
        PhoneDirector pd = new LurenjiaPhoneDirector(new LurenjiaPhoneBuilder());
        //2.组装一台手机
        Phone phone = pd.creatPhone();
        //3.看看配件是什么货色
        System.out.println(phone.getBattery().getName());
        System.out.println(phone.getCpu().getName());
        System.out.println(phone.getScreen().getName());
    }
}

运行结果:

 

标签:return,name,Battery,Screen,建造,模式,public,Cpu
From: https://www.cnblogs.com/lurenjia-bky/p/16918525.html

相关文章

  • java和设计模式(行为模式)
        和构建模式、结构模式相比较,行为模式的内容要多一些。在设计模式中,行为模式强调的是类和对象之间的交互关系。它更多强调的是,在特定的行为场景种,使用哪一种设计......
  • java和设计模式(结构模式)
        在设计模式中,有一类设计模式是比较有意思的,但是关注的人不多。这就是结构模式。如果说创建模式的重点是如何创建出实例对象,那么结构模式的特点就是利用类、示例......
  • java和设计模式(创建模式)
        有过软件开发经验的同学都知道,软件开发功能怎么都能完成。但是如果需要在软件上面不断做需求变更和重构,这就变得好复杂了。对于这些变更,如果只是硬编码去解决,那......
  • VMware 桥接 NAT host-only 模式区别和配置方法
    NAT:网络地址转换,虚拟机和物理机构建一个子网络,虚拟机可以上网,物理机可以连接虚拟机,但是物理机所在网络的其他设备不能直接连接子网络中的虚拟(通过网络地址下探也是可以的......
  • Composite 组合模式(结构型模式)
    意图:将对象组成树形结构以表示“部分——整体”的层次结构。Composite使得对单个对象和组合对象的使用具有一致性。要点:1、Composite模式采用树形结构来实现普遍存在的对象......
  • Bridge 桥接模式(结构型模式)
    意图:将抽象部分与实现部分分离,使它们都可以独立的变化。要点:1、Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度......
  • Adapter 适配器模式(结构型模式)
    意图:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。要点:1、Adapter模式......
  • Prototype 原型模式(创建型模式)
    意图:使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。要点:1、Prototype模式同样用于隔离类对象的使用者和具体类型(易变类)......
  • C语言和设计模式(总结篇)
      设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。我在这里写的博客只是我个人对设计模式的粗浅认识。文中肯定存在很多的不足和不......
  • C语言和设计模式(之开篇)
      关于软件设计方面的书很多,比如《​​重构​​​》,比如《​​设计模式​​》。至于软件开发方式,那就更多了,什么极限编程、精益方法、敏捷方法。随着时间的推移,很多的......