• 建造者模式


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

     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 }

  • 相关阅读:
    OpenGL之纹理映射
    凭着这份《微服务架构实战》,带你立足实战落地微服务架构
    【软件工程】简单讲讲设计模式七大原则,以及代码简单举例
    Linux per-cpu
    C++ 大作业/课程设计 小型公司工资管理软件
    Centos---命令详解 vi 系统服务 网络
    HTML语义化标签(一)
    第十五章 jQuery中的事件
    Leetcode算法入门与数组丨2. LeetCode入门
    一张图弄懂海外模型的有效特征
  • 原文地址:https://blog.csdn.net/qq_40280043/article/details/139618877