建造者模式(1)-盖房子

2020-12-04  本文已影响0人  Shaw_Young

盖房项目需求

  1. 需要建房子: 这以过程为打桩、砌墙、封顶
  2. 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的
  3. 请编写程序,完成需求
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();
    }

}

传统方式解决盖房需求问题分析

  1. 优点是比较好理解,检点易操作
  2. 设计的程序结构,过于简单,没有设计缓存层对象,程序的扩展和维护不好,也就是说,这种设计方案,把产品(即:房子)和创建产品的过程(即:建房子流程)封装在一起,耦合性增强了
  3. 解决方案: 将产品和产品建造过程解耦=>建造者模式
上一篇下一篇

猜你喜欢

热点阅读