zoukankan      html  css  js  c++  java
  • linkin大话设计模式--建造模式

    linkin大话设计模式--建造模式


    建造模式是对象的创建模式,可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。


    建造模式的结构:

    抽象建造者角色(Builder):给出一个抽象的接口,用来规范产品对象的各个组成成分的建造。

    具体建造者角色(ConcreteBuilder):

    1.实现抽象建造者所申明的接口,给出一步一步地完成创建产品实例的操作。

    2.在建造过程完成后,提供产品的实例。

    导演者角色(Director):用来调用具体建造者以创建产品对象。

    产品角色(Product):要建造的对象。


    在什么情况下使用建造模式?个人觉得有点绕,没有多少体会。。。
    1.需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以仅仅是一个对象的一个组成成分。
    2.需要生成的产品对象的属性互相依赖。
    3.在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品的创建过程中不易得到。

    代码如下:

    public class MyCarTest {
        public static void main(String[] args) {
            //建造模式  指定一个导演 然后创建出不同的产品
            Director d=new Director();
            Car car=d.buildCar();
            System.out.println(car);
            Train train=d.buildTrain();
            System.out.println(train);
        }
    
    }
    
    //导演者角色 直接暴露给客户端创建自己的产品
    class Director {
        private BuildeCar bc=new BuilderCar();
        private BuildeTrain bt=new BuilderTrain();
        //命令造汽车
        public Car buildCar(){
            bc.carPart1();
            bc.carPart2();
            bc.carPart3();
            Car car=bc.carOver();
            return car;
        }
        
        //命令造火车
        public Train buildTrain(){
            bt.trainPart();
            bt.loco();
            Train train=bt.trainOver();
            return train;
        }
        
    }
    
    //对火车来说 抽象建造者角色接口
    interface BuildeTrain{
        
        public void trainPart();
        public void loco();
        public Train trainOver();
    }
    
    //对汽车来说 抽象建造者角色接口
    interface BuildeCar{
      
        public abstract void carPart1();
        public abstract void carPart2();
        public abstract void carPart3();
        public abstract Car carOver();
    }
    
    class BuilderTrain implements BuildeTrain{
        private Train train=new Train();
        public  void trainPart(){
            System.out.println("火车的车厢造好了...");
        }
        public  void loco(){
            System.out.println("火车头造好了...");
        }
        public  Train trainOver(){
            return train;
        }
    }
    
    class BuilderCar implements BuildeCar{
        private Car car=new Car();
        public void carPart1(){
            System.out.println("汽车的框架完成了...");
        }
        public void carPart2(){
            System.out.println("汽车的底盘完成了...");
        }
        public void carPart3(){
            System.out.println("汽车的轮胎完成了...");
        }
        public Car carOver(){
            return car;
        }
    }
    
    class Car {
        public String toString (){
            return "汽车产品...";
        }
    }
    
    class Train {
        public String toString(){
            return"火车产品...";
        }
    }
    

  • 相关阅读:
    使用Ambari快速部署Hadoop大数据环境
    Hadoop,HBase,Storm,Spark到底是什么?
    Google服务器架构图解简析
    百度的Hadoop分布式大数据系统图解:4000节点集群
    为Hadoop集群选择合适的硬件配置
    Hadoop组件Hive配置文件配置项详解
    腾讯TDW:大型Hadoop集群应用
    Hadoop组件Hbase配置项详解
    主流大数据采集平台的架构图解
    大数据架构师技能图谱
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233183.html
Copyright © 2011-2022 走看看