zoukankan      html  css  js  c++  java
  • 第一节:传统方式完成需求

    一、需求分析

      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、解决方案:将产品和产品建造过程解耦 =》建造者模式

  • 相关阅读:
    std::auto_ptr
    make_pair
    _stdcall与_cdecl(了解)
    函数名与函数指针(了解)
    空指针与野指针
    std::bind(二)
    C++ map 映照容器
    sql find duplicate
    数量
    sort sign numeric
  • 原文地址:https://www.cnblogs.com/niujifei/p/14255874.html
Copyright © 2011-2022 走看看