建造者模式

  建造者模式适用于需要生成的产品对象有复杂的内部结构。

 1 //产品
 2 public class AirShip {
 3     private Engine engine;    //发动机
 4     private Cabin cabin;    //机舱
 5     private Excape excape;    //逃生舱
 6     public Engine getEngine() {
 7         return engine;
 8     }
 9     public void setEngine(Engine engine) {
10         this.engine = engine;
11     }
12     public Cabin getCabin() {
13         return cabin;
14     }
15     public void setCabin(Cabin cabin) {
16         this.cabin = cabin;
17     }
18     public Excape getExcape() {
19         return excape;
20     }
21     public void setExcape(Excape excape) {
22         this.excape = excape;
23     }
24 }
25 class Engine{
26     String name;
27 }
28 class Cabin{
29     String name;
30 }
31 class Excape{
32     String name;
33 }
1 //产品建造
2 public interface AirShipBuilder {
3     Engine createEngine();
4     Cabin createCabin();
5     Excape createExcape();
6 }
1 //指挥者
2 public interface Director {
3     AirShip createAirship();
4 }
 1 //具体的指挥者
 2 public class SxtDirector implements Director{
 3     AirShipBuilder builder;
 4     //根据不同的建造者
 5     public SxtDirector(AirShipBuilder builder) {
 6         this.builder = builder;
 7     }
 8     //相同的安装顺序
 9     @Override
10     public AirShip createAirship() {
11         AirShip ship = new AirShip();
12         ship.setCabin(builder.createCabin());
13         ship.setEngine(builder.createEngine());
14         ship.setExcape(builder.createExcape());
15         return ship;
16     }
17 }
//具体的建造者
public class SxtAirShipBuilder implements AirShipBuilder{
    @Override
    public Engine createEngine() {
        System.out.println("engine is building");
        return new Engine();
    }
    @Override
    public Cabin createCabin() {
        System.out.println("cabin is building");
        return new Cabin();
    }
    @Override
    public Excape createExcape() {
        System.out.println("excape is building");
        return new Excape();
    }
}
1 //用户只需要与指挥者和建造者打交道就可以得到结构复杂的产品 
2 public class BuilderDemo {
3     public static void main(String[] args) {
4         AirShipBuilder bu = new SxtAirShipBuilder();
5         AirShip ship = new SxtDirector(bu).createAirship();
6     }
7 }

相关推荐

  1. 建造模式(Builder)

    2024-06-14 23:30:02       59 阅读
  2. 建造模式

    2024-06-14 23:30:02       39 阅读
  3. 建造模式

    2024-06-14 23:30:02       48 阅读
  4. 建造模式(Builder)

    2024-06-14 23:30:02       45 阅读
  5. 建造模式

    2024-06-14 23:30:02       45 阅读
  6. 建造模式

    2024-06-14 23:30:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-14 23:30:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-14 23:30:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-14 23:30:02       82 阅读
  4. Python语言-面向对象

    2024-06-14 23:30:02       91 阅读

热门阅读

  1. 类android设备reset过程

    2024-06-14 23:30:02       27 阅读
  2. android 14.0 控制wifi启用禁用功能实现

    2024-06-14 23:30:02       37 阅读
  3. C Primer Plus第八章学习笔记以及编程题

    2024-06-14 23:30:02       26 阅读
  4. android OTA升级之后,apk崩溃无法启动

    2024-06-14 23:30:02       32 阅读
  5. Flask-Logging

    2024-06-14 23:30:02       33 阅读
  6. 小程序如何刷新当前页面

    2024-06-14 23:30:02       32 阅读
  7. mysql编程--创建存储过程

    2024-06-14 23:30:02       30 阅读
  8. Shell之免交互

    2024-06-14 23:30:02       26 阅读
  9. 力扣(2024.06.14)

    2024-06-14 23:30:02       33 阅读
  10. Python库

    2024-06-14 23:30:02       31 阅读
  11. 柯里化的实现

    2024-06-14 23:30:02       24 阅读