• 建造者模式


    建造者模式再生活中很常见,以盖房子为例,如果想盖一栋写字楼,业主可以公开招标,建筑单位负责施工,设计单位负责出图。单单从施工过程来看,肯定是由项目经理来负责项目的进行,盖房子需要很多材料,钢筋、水泥、砖等,这些不可能由项目经理自己去生产这些材料,而是联系建材商负责提供,然后由一线工人负责实际的生产,项目经历更多的是承担一个指挥者的角色,实际的工作是由工人来完成的。

    再建造者模式中,主要由四个关键部分组成:

    ①产品:实际要生产的东西,比如房子,组成部分大同小异,但是每一个构件的材料可以不同;

    ②抽象建造者:包括建造每一部分的抽象方法和返回产品的方法;

    ③具体建造者:实现抽象方法;

    ④指挥者

    建造者模式代码示例:

    package newcoder.Builder;
    /*
    建造者模式由四部分组成:
    1、产品
    2、抽象建造者,包括建造每一部分的抽象方法和返回产品的方法
    3、具体建造者,继承抽象建造者,实现抽象方法
    4、指挥者
     */
    class productHouse{
        private String sofa;
        private String TV;
        private String desk;
    
        public String getSofa() {
            return sofa;
        }
    
        public void setSofa(String sofa) {
            this.sofa = sofa;
        }
    
        public String getTV() {
            return TV;
        }
    
        public void setTV(String TV) {
            this.TV = TV;
        }
    
        public String getDesk() {
            return desk;
        }
    
        public void setDesk(String desk) {
            this.desk = desk;
        }
    
        @Override
        public String toString() {
            return "房子里面有:"+this.desk+"
    "+this.sofa+"
    "+this.TV;
        }
    }
    abstract class builder{
        protected productHouse producthouse = new productHouse();
        public abstract void addSofa(String band);
        public abstract void addDesk(String band);
        public abstract void addTV(String band);
        public productHouse getResult(){
            return producthouse;
        }
    }
    class concreteBuilder extends builder{
        public void addSofa(String band){
            producthouse.setSofa(band);
        }
        public void addDesk(String band){
            producthouse.setDesk(band);
        }
        public void addTV(String band){
            producthouse.setTV(band);
        }
    }
    class Director{
        private builder bd;
        public Director(builder bd){
            this.bd = bd;
        }
        public productHouse command(){
            bd.addDesk("红木桌子");
            bd.addSofa("皮沙发");
            bd.addTV("长虹电视");
            return bd.getResult();
        }
    }
    public class BuilderTest {
        public static void main(String args[]){
            productHouse myhouse;
            builder a = new concreteBuilder();
            Director d = new Director(a);
            myhouse = d.command();
            System.out.println(myhouse);
        }
    
    }

    建造者(Builder)模式创建的是复杂对象,其产品的各个部分经常面临着剧烈的变化,但将它们组合在一起的算法却相对稳定,所以它通常在以下场合使用。

    • 创建的对象较复杂,由多个部件构成,各部件面临着复杂的变化,但构件间的建造顺序是稳定的。
    • 创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式,即产品的构建过程和最终的表示是独立的。
  • 相关阅读:
    范仁义html+css课程---7、表单
    范仁义html+css课程---6、表格
    范仁义html+css课程---5、列表
    范仁义html+css课程---4、文本标签
    范仁义html+css课程---3、图片和超链接
    react项目如何运行
    maven search
    PowerDesigner中Name与Code同步的问题
    PowerDesigner跟表的字段加注释
    MobilePhone正则表达式
  • 原文地址:https://www.cnblogs.com/xxyxt/p/11474401.html
Copyright © 2020-2023  润新知