设计模式 建造者_创造模式打开物品栏的步骤

设计模式 建造者_创造模式打开物品栏的步骤1.关系类图2.建造者模式介绍定义:指将一个复杂的对象的构造与它表示分离,使同样构建过程不同的表示,这样的设计模式被称为建造者模式.它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成的.它将变与不变相分离,

1.关系类图

在这里插入图片描述

2.建造者模式介绍

定义:指将一个复杂的对象的构造与它表示分离,使同样构建过程不同的表示,这样的设计模式被称为建造者模式.它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成的.它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的.

优点:
	1)封装性好,构建与组成部分必须相同,其限制了使用范围.
	2)扩展性好,各个具体建造者相互独立,有利于系统的解耦
	3)客户端不必知道产品组成细节,建造者可以创建过程逐渐细化,而不对其他模块产生任何影响,便于控制	细节风险
	
缺点:
	1)产品组成部分必须相同,这限制了其使用范围
	2)如果产品内部变化复杂,内部发生变化,则建造者需要同步修改,后期维护成本比较大

建造者模式与工厂模式的关注点不同:建造者模式注重零部件的组装过程,而过程方法模式各部分注重零部件的创建过程

3.代码实现

//产品:客厅
public class Parlour { 
   

    private String wall;    //墙
    private String TV;    //电视
    private String sofa;    //沙发 

    public void setWall(String wall) { 
   
        this.wall = wall;
    }

    public void setTV(String TV) { 
   
        this.TV = TV;
    }

    public void setSofa(String sofa) { 
   
        this.sofa = sofa;
    }

    @Override
    public String toString() { 
   
        return "Parlour{" +
                "wall='" + wall + '\'' +
                ", TV='" + TV + '\'' +
                ", sofa='" + sofa + '\'' +
                '}';
    }
}

//抽象建造者
public abstract class Decorator { 
   
    //创建产品对象
    protected Parlour product = new Parlour();
    public abstract void buildWall();
    public abstract void buildTV();
    public abstract void buildSofa();

    //返回产品对象
    public Parlour getResult() { 
   
        return product;
    }

}

//具体建造者
public class ConcreteDecorator extends Decorator { 
   
    public void buildWall() { 
   
        product.setWall("w1");
    }
    public void buildTV() { 
   
        product.setTV("TV1");
    }
    public void buildSofa() { 
   
        product.setSofa("sf1");
    }

}

//指挥者:项目经理
public class ProjectManager { 
   
    private Decorator builder;
    public ProjectManager(Decorator builder) { 
   
        this.builder = builder;
    }
    //产品构建与组装方法

    public Parlour decorate() { 
   
        builder.buildWall();
        builder.buildTV();
        builder.buildSofa();
        return builder.getResult();
    }
}


//客户端
  public static void main(String[] args) { 
   
        Decorator decorator=new ConcreteDecorator();
        ProjectManager projectManager = new ProjectManager(decorator);
        Parlour parlour = projectManager.decorate();
        System.out.println(parlour);
    }

今天的文章设计模式 建造者_创造模式打开物品栏的步骤分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/61557.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注