zoukankan      html  css  js  c++  java
  • 设计模式之建造者模式(简单)

    代码展示:

    package com.example.build;
    
    public class Robot {
        private String head;
        private String body;
        private String foot;
    
        public String getHead() {
            return head;
        }
    
        public void setHead(String head) {
            this.head = head;
        }
    
        public String getBody() {
            return body;
        }
    
        public void setBody(String body) {
            this.body = body;
        }
    
        public String getFoot() {
            return foot;
        }
    
        public void setFoot(String foot) {
            this.foot = foot;
        }
    }
    package com.example.build;
    
    //创建者
    public interface IBuildRobot {
        void buildHead();
        void buildBody();
        void buildFoot();
        Robot fitRobot();
    }
    package com.example.build;
    
    public class BuildRobot implements IBuildRobot{
        private Robot robot;
        public BuildRobot(){
            robot=new Robot();
        }
        @Override
        public void buildHead() {
            robot.setHead("头部组装");
        }
    
        @Override
        public void buildBody() {
            robot.setBody("身体组装");
        }
    
        @Override
        public void buildFoot() {
            robot.setFoot("足部组装");
        }
        //组合
        @Override
        public Robot fitRobot() {
            return robot;
        }
    }
    package com.example.build;
    
    //指挥者
    public class Director {
        public Robot createBuild(IBuildRobot iBuildRobot){
            iBuildRobot.buildHead();
            iBuildRobot.buildBody();
            iBuildRobot.buildFoot();
            return iBuildRobot.fitRobot();
        }
    }
    package com.example.build;
    
    public class Test {
        public static void main(String[] args) {
            IBuildRobot iBuildRobot=new BuildRobot();
             Director director=new Director();
            Robot build = director.createBuild(iBuildRobot);
            System.out.println(build.getHead());
            System.out.println(build.getBody());
            System.out.println(build.getFoot());
        }
    }
    头部组装
    身体组装
    足部组装

    建造者模式的作用:

    优点

    易于解耦
    将产品本身与产品创建过程进行解耦,可以使用相同的创建过程来得到不同的产品。也就说细节依赖抽象。
    易于精确控制对象的创建
    将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰
    易于拓展
    增加新的具体建造者无需修改原有类库的代码,易于拓展,符合“开闭原则“。
    每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。

    缺点
    建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
    如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

    应用场景

    • 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性;
    • 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。

    参考:https://blog.csdn.net/carson_ho/article/details/54910597 

  • 相关阅读:
    【逆向】《0day安全-软件漏洞分析技术》实验笔记2
    【逆向】《0day安全-软件漏洞分析技术》实验笔记1
    WorkWithPlus 13.15 升级!列表对象的优化效果显著!
    「版本更新」Genexus 16 Upgrade 9已发布!
    下一波数字化转型来临,我们需要选择更智能的开发工具
    太棒!企业和程序员都高兴!2-3个月打造全栈工程师
    GeneXus中如何使用聊天机器人
    「版本更新」GeneXus16 Upgrade 8的特性
    看完视频我终于明白:资深架构师角度的技术架构是这样!
    数据报告和分析:Dashboard
  • 原文地址:https://www.cnblogs.com/tysl/p/11159109.html
Copyright © 2011-2022 走看看