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

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

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

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

适用性:

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());    }}
就这么简单,豪宅好了,你也能够建别墅哦!

你可能感兴趣的文章
Python简介
查看>>
泛函编程(13)-无穷数据流-Infinite Stream
查看>>
XML与HTML
查看>>
新人程序员如何脱颖而出
查看>>
网络工程师真的也需要好好学习linux系统
查看>>
Entangle 2.0 “Sodium”正式发布
查看>>
Redis之父表示ARM服务器没戏!
查看>>
java调用cmd命令并捕获执行结果字符串的代码
查看>>
Eclipse中android sdk升级ADT版本过低解决办法
查看>>
MDT 2013 从入门到精通之无法分析或处理pass[specialize]文件
查看>>
桌面支持--512-Rear chassis fan not detected
查看>>
Django 开源相册组件介绍 django-photologue
查看>>
IntelliJ IDEA 14 创建Web项目
查看>>
Redis server命令
查看>>
【云计算的1024种玩法】手把手教你如何编译升级 OpenResty
查看>>
Mac Appium环境安装
查看>>
android源码分享,布局切换微信提醒对话框下拉刷新Cell进度动画代码下载
查看>>
Hello world!
查看>>
Solidity 函数returns多个值的接收方式 总结
查看>>
基于PCDN技术的无延时直播方案
查看>>