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 

  • 相关阅读:
    SyncNavigator V8.6.2数据库同步工具安装与卸载
    数据库同步软件|SyncNavigator数据库同步软件 V8.6.2官网下载地址
    sql server两个数据库同步
    怎么实现数据库异地同步备份
    两台服务器数据库同步
    如何实现数据实时同步
    数据库同步软件|SyncNavigator数据库同步软件 V8.6.2
    syncnavigator使用说明
    go 编译
    Go语言实现FastDFS分布式存储系统WebAPI网关
  • 原文地址:https://www.cnblogs.com/tysl/p/11159109.html
Copyright © 2011-2022 走看看