1. 程式人生 > 實用技巧 >第一節:傳統方式完成需求

第一節:傳統方式完成需求

一、需求分析

  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、解決方案:將產品和產品建造過程解耦 =》建造者模式