zoukankan      html  css  js  c++  java
  • 建造者模式-结构比较简明

    <?php
    
    /*规范制造各个零件的接口*/
    interface Builder
    {
        public function buildMapPart();//制造地图零件
        public function buildBuildingPart();//制造建筑零件
        public function buildArmyPart();//制造部队零件
        public function getResult();//组装零件
    }
    
    
    /*实际建造器类,比如初始化某个任务关*/
    class ConcreteBuilder implements Builder
    {
    
        public function buildMapPart()      //制造地图-零件
        {
            echo '地图零件
    ';
        }
        public function buildBuildingPart()    //制造建筑-零件
        {
            echo '建筑零件
    ';
        }
        public function buildArmyPart()   //制造部队-零件
        {
            echo '部队零件
    ';
        }
        public function getResult()    //组装零件-成为成品
        {
            echo '组装零件
    ';
        }
    }
    
    //实际建造类,建造另一种场景
    class GaoyuanBuilder implements Builder
    {
        public function buildMapPart()
        {
            echo '2号高原地图';
        }
        public function buildBuildingPart()
        {
            echo '防风碉堡';
        }
        public function buildArmyPart()
        {
            echo '机械化步兵';
        }
        public function getResult()
        {
            echo '组装零件:高原地图+碉堡+机械化步兵!';
        }
    }
    
    
    
    //监督类,也就是控制绘制流程的类
    class Director
    {
        private $builder;//私有属性,确定使用的建造器
        //构造方法,参数为选定的建造器对象
        public function __construct($builder)
        {
            //确定使用的建造器
            $this->builder = $builder;
        }
        //负责建造流程的方法,调用建造器对象的方法,制造所有零件
        public function buildeAllPart()
        {
            //制造地图零件
            $this->builder->buildMapPart();
            //制造建筑零件
            $this->builder->buildBuildingPart();
            //制造部队零件
            $this->builder->buildArmyPart();
        }
    }
    
    $concreteBuilder = new ConcreteBuilder();//假设根据任务关,初始化我们需要的实际建造器对象
    $director = new Director($concreteBuilder);//初始化一个监督对象
    $director->buildeAllPart();//制造所有零件
    $concreteBuilder->getResult();//最后让建造器组装零件,生成画面
    
    //建造另一种场景
    $gaoyuanBuilder = new GaoyuanBuilder();//假设根据任务关,初始化我们需要的实际建造器对象
    $director = new Director($gaoyuanBuilder);//初始化一个监督对象
    $director->buildeAllPart();//制造所有零件
    $gaoyuanBuilder->getResult();//最后让建造器组装零件,生成画面
    
    ?>
    用途总结:建造器模式可以将流程和细节分离,各司其职。
    
    实现总结:需要一个建造器接口或者抽象类,负责规范各个方法,比如上面的Builder。然后让实际的建造器类去实现所有的方法,比如上面的ConcreteBuilder。同时需要负责流程管理的监督类,比如上面的Director,负责调用建造器的各个零件制造方法。最后让建造器去组装所有的零件。

    主要是在于建造各个不同的东西时,方便。比如建造地图,士兵,建造???还不懂
  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/jiufen/p/4994719.html
Copyright © 2011-2022 走看看