博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
建造者模式(屌丝专用)
阅读量:5035 次
发布时间:2019-06-12

本文共 3000 字,大约阅读时间需要 10 分钟。

屌丝有了钱仅仅是用来花的,那得有些霸气一点的房子吧!

意图:将一个复杂对象的构建与它的表示分离。使得相同的构建过程能够创建不同的表示。

适用性:

1、房子有不同的几个部分。能独立的安装

2、希望能建造出多个不同表象的房子

大家先看个类图

1.Builder

为创建一个Product对象的各个部件指定抽象接口。

2.ConcreteBuilder

实现Builder的接口以构造和装配该产品的各个部件。

定义并明白它所创建的表示。

提供一个检索产品的接口。

3.Director

构造一个使用Builder接口的对象。

4.Product

表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

包括定义组成部件的类。包括将这些部件装配成终于产品的接口。

如今要建的是房子House。有个喜欢的家。

package creatingtype.builder;/* * 房子 */public class House {    // 地板    private String floor;    // 墙    private String wall;    // 屋顶    private String housetop;    public String getFloor() {        return floor;    }    public void setFloor(String floor) {        this.floor = floor;    }    public String getWall() {        return wall;    }    public void setWall(String wall) {        this.wall = wall;    }    public String getHousetop() {        return housetop;    }    public void setHousetop(String housetop) {        this.housetop = housetop;    }}
预定project队(不同的project队建不同的房子)

package creatingtype.builder;/* * project队 */public interface HouseBuilder {    //建造地板    public void makeFloor();    //建造墙    public void makeWall();    //建造屋顶    public void makeHousetop();    public House getHouse();}
找个负责人

package creatingtype.builder;public class HouseDirector {    public void makeHouse(HouseBuilder builder) {        //建造地板        builder.makeFloor();        //建造墙        builder.makeWall();        //建造屋顶        builder.makeHousetop();    }}
负责人有了。假设你想建造别墅。确定别墅project队

package creatingtype.builder;/* * 别墅project队 */public class BieShuBuilder implements HouseBuilder {    House house = new House();    public void makeFloor() {        house.setFloor("别墅-->地板");    }    public void makeHousetop() {        house.setHousetop("别墅-->房顶");    }    public void makeWall() {        house.setWall("别墅-->墙");    }    public House getHouse() {        return house;    }}
负责人有了,假设你想建造豪宅,确定豪宅project队

package creatingtype.builder;/* * 豪宅project队 */public class HaoZhaiBuilder implements HouseBuilder {    House house = new House();    public House getHouse() {        return house;    }    public void makeFloor() {        house.setFloor("豪宅-->地板");    }    public void makeHousetop() {        house.setHousetop("豪宅-->房顶");    }    public void makeWall() {        house.setWall("豪宅-->墙");    }}
都好了。你能够開始修建自己想要的家了。

package creatingtype.builder;// 建造者模式public class MainClass {    //    Builder模式也叫建造者模式或者生成器模式,    //    是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之中的一个,用来    //    隐藏复合对象的创建过程,它把复合对象的创建    //    过程加以抽象。通过子类继承和重载的方式,动    //    态地创建具有复合属性的对象。    public static void main(String[] args) {        //project队        HouseBuilder builder = new HaoZhaiBuilder();        //设计者        HouseDirector director = new HouseDirector();        director.makeHouse(builder);        House house = builder.getHouse();        System.out.println(house.getFloor());        System.out.println(house.getWall());        System.out.println(house.getHousetop());    }}
就这么简单,豪宅好了,你也能够建别墅哦!

转载于:https://www.cnblogs.com/bhlsheji/p/5349135.html

你可能感兴趣的文章
Mac item2常用快捷键
查看>>
转!mysql备份与还原数据库
查看>>
Python基础——数据类型、流程控制、常用函数
查看>>
近期在用Gvim,默认样式比较难看,现在调整了一下
查看>>
关于框架的一些学习笔记
查看>>
vSphere中Storage vMotion的流程详解
查看>>
Docker-Mysql-proxy Mysql Proxy实现读写分离
查看>>
mysql 的基本使用命令
查看>>
字符串排序之一
查看>>
判断三角形类型方法的单元测试
查看>>
C++学习笔记51:排序
查看>>
spring.factories
查看>>
php使用amqplib方式使用rabbitmq
查看>>
打印控件
查看>>
技术团队的目标管理
查看>>
gitlab的介绍
查看>>
利用logging.basicConfig生成文件--中文乱码解决方法
查看>>
matlab新手入门(二)(翻译)
查看>>
Python 编码规范 PEP8
查看>>
mac os 下安装 nmap网络扫描和嗅探工具包
查看>>