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