版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaofather/article/details/85122656
1. 深入理解建造者模式
1.1 建造者模式的理念:高可用,易维护
1.2 命题:根据工人施工流程实现建造者设计模式
照着上图分析并总结:
1.设计师构建蓝图
1.定义需求(构造对象)
public class DemandAssumption {
private String gender;// 性别
private Integer height;// 身高
private String face;// 面貌
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Integer getHeight() {
return height;
}
public void setHeight(Integer height) {
this.height = height;
}
public String getFace() {
return face;
}
public void setFace(String face) {
this.face = face;
}
@Override
public String toString() {
return "DemandAssumption [gender=" + gender + ", height=" + height
+ ", face=" + face + "]";
}
}
2.工人拿到蓝图准备施工相关内容,因为不同的施工场景不同,细节产生变化,故需要抽象化
2.抽象需求
public interface Demand {
void gender();
void height();
void face();
DemandAssumption people();
}
3.具体的建造
public class People1 implements Demand{
private DemandAssumption people;
public People1(){
people = new DemandAssumption();
}
@Override
public void gender() {
people.setGender("男");
}
@Override
public void height() {
people.setHeight(185);
}
@Override
public void face() {
people.setFace("穷凶极恶");
}
@Override
public DemandAssumption people() {
people.toString();
return people;
}
}
public class People2 implements Demand{
private DemandAssumption people;
public People2(){
people = new DemandAssumption();
}
@Override
public void gender() {
people.setGender("女");
}
@Override
public void height() {
people.setHeight(165);
}
@Override
public void face() {
people.setFace("如沐春风");
}
@Override
public DemandAssumption people() {
return people;
}
}
3.工人根据准备的内容定义施工方式
4.建造者
public class Builder {
public DemandAssumption people(Demand demand){
demand.gender();
demand.height();
demand.face();
return demand.people();
}
}
4.项目负责人要求工人施工,并得到成果
5.测试类
public class TestMain {
public static void main(String[] args) {
Demand de = null;
Builder builder = new Builder();
de = new People1();
System.out.println(builder.people(de).toString());
de = new People2();
System.out.println(builder.people(de).toString());
}
}
5.结果
输出:
DemandAssumption [gender=男, height=185, face=穷凶极恶]
DemandAssumption [gender=女, height=165, face=如沐春风]
2. 什么时候需要用到建造者模式?
2.1 当你类似于工程项目负责人,你对别人做的事情不放心,需要有一个大纲来控制的时候
2.2 功能版本更迭,但实际内容差不多的时候
版本1的内容是123 , 版本2的内容是124,此时可以用到建造者设计模式,版本之间切换自由选择,而不是建立分支增加功能难度,影响后期维护