一、需求分析

  1) 需要建房子:这一过程为打桩、 砌墙、封顶
  2) 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的.

二、代码实现

  1、UML 类图  

                

  2、代码实现

 1 public abstract class AbstractHouse {
 2 
 3     //打地基
 4     public abstract void buildBasic();
 5     //砌墙
 6     public abstract void buildWalls();
 7     //封顶
 8     public abstract void roofed();
 9 
10     public void build() {
11         buildBasic();
12         buildWalls();
13         roofed();
14     }
15 }
16 
17 ------------------------------------------------
18 /**
19  * 普通房子
20  */
21 public class CommonHouse extends AbstractHouse{
22     @Override
23     public void buildBasic() {
24         System.out.println(" 普通房子打地基 ");
25     }
26 
27     @Override
28     public void buildWalls() {
29         System.out.println(" 普通房子砌墙 ");
30     }
31 
32     @Override
33     public void roofed() {
34         System.out.println(" 普通房子封顶 ");
35     }
36 }
37 ------------------------------------------------
38 public class HigeHouse extends AbstractHouse {
39     @Override
40     public void buildBasic() {
41         System.out.println(" 高楼打地基 ");
42     }
43 
44     @Override
45     public void buildWalls() {
46         System.out.println(" 高楼砌墙 ");
47     }
48 
49     @Override
50     public void roofed() {
51         System.out.println(" 高楼封顶 ");
52     }
53 }

 

    测试代码:

 1 /**
 2  * 传统方式解决盖房需求问题分析
 3  * 1) 优点是比较好理解,简单易操作。
 4  * 2) 设计的程序结构,过于简单,没有设计缓存层对象,程序的扩展和维护不好. 也就
 5  * 是说,这种设计方案,把产品(即:房子) 和 创建产品的过程(即:建房子流程) 封
 6  * 装在一起,耦合性增强了。
 7  * 3) 解决方案:将产品和产品建造过程解耦 => 建造者模式.
 8  */
 9 public class Client {
10     public static void main(String[] args) {
11         CommonHouse commonHouse = new CommonHouse();
12         commonHouse.build();
13 
14         System.out.println("---------------");
15 
16         HigeHouse higeHouse = new HigeHouse();
17         higeHouse.build();
18     }
19 }

三、分析

  1、优点是比较好理解,简单易操作;

  2、设计的程序结构,过于简单,没有设计缓存层对象,程序的扩展和维护不好;也就是说,这种设计方案,把产品(即:房子) 和 创建产品的过程(即:建房子流程) 封装在一起,耦合性增强了。

  3、解决方案:将产品和产品建造过程解耦 =》建造者模式

 

posted on 2021-01-09 18:49  格物致知_Tony  阅读(89)  评论(0编辑  收藏  举报