盖房项目需求
- 需要建房子: 这以过程为打桩、砌墙、封顶
- 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的
- 请编写程序,完成需求
package com.young.builder;
/**
* @author Shaw_Young
* @date 2020/10/6 20:16
*/
public abstract class AbstractHouse {
/**
* 打地基
*/
public abstract void buildBasic();
/**
* 砌墙
*/
public abstract void buildWall();
/**
* 封顶
*/
public abstract void roofed();
public void build() {
buildBasic();
buildWall();
roofed();
}
}
package com.young.builder;
/**
* @author Shaw_Young
* @date 2020/10/6 20:18
*/
public class CommonHouse extends AbstractHouse {
@Override
public void buildBasic() {
System.out.println("给普通房子打地基");
}
@Override
public void buildWall() {
System.out.println("给普通房子砌墙");
}
@Override
public void roofed() {
System.out.println("给普通房子封顶");
}
}
package com.young.builder;
/**
* @author Shaw_Young
* @date 2020/10/6 20:19
*/
public class Client {
public static void main(String[] args) {
CommonHouse commonHouse = new CommonHouse();
commonHouse.build();
}
}
传统方式解决盖房需求问题分析
- 优点是比较好理解,检点易操作
- 设计的程序结构,过于简单,没有设计缓存层对象,程序的扩展和维护不好,也就是说,这种设计方案,把产品(即:房子)和创建产品的过程(即:建房子流程)封装在一起,耦合性增强了
- 解决方案: 将产品和产品建造过程解耦=>建造者模式
网友评论