设计模式学习笔记之建造者模式
来源:互联网 发布:手机看淘宝实名认证了 编辑:程序博客网 时间:2024/05/21 22:53
创建者模式用来创建一个较为复杂的对象,通过该模式隐藏了较为复杂的创建过程,用户只需要使用创建功能就能获取到构造出的复杂的对象。下面是我对该模式理解后画的一张图
下面通过代码和图进行说明:
1.首先我们要创建一个房子House,定义了一个类。
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; }}
2.我们要去建这个房子House,但是不知道建什么样的房子,所以定义一个建房子的接口HouseBuilder,只用来定义建房子的方法。
public interface HouseBuilder { public void makeFloor(); public void makeWall(); public void makeHousetop(); public House getHouse();}
3.既然要建房子,就要知道建什么样的房子,比如平房,公寓,那么就创建类实现建房子的接口,该具体的建什么样的对象的类就是建造者,创建出具体的对象是什么样的,并定义方法返回建出的对象。
平房:
public class PingFangBuilder implements HouseBuilder { House house = new House(); public void makeFloor() { house.setFloor("平房-->地板"); } public void makeWall() { house.setHousetop("平房-->房顶"); } public void makeHousetop() { house.setWall("平房-->墙"); } public House getHouse() { return house; }}
公寓:
public class GongYuBuilder implements HouseBuilder { House house = new House(); public void makeFloor() { house.setFloor("公寓-->地板"); } public void makeWall() { house.setHousetop("公寓-->房顶"); } public void makeHousetop() { house.setWall("公寓-->墙"); } public House getHouse() { return house; }}
4.虽然建造者实现了建造过程,但是用户使用的时候需要自己执行set方法进行建造,这样就会很麻烦,用户需要知道建造过程,所以我们还需要一个类,指挥该建造者进行建造。
public class HouseDicrector { //传入的builder是具体的建造者 public HouseDicrector(HouseBuilder builder){ builder.makeFloor(); builder.makeHousetop(); builder.makeWall(); }}
5.用户使用,使用时用户需要的是House的对象house,用户需要什么样的对象house则获取相应的建造者PingFangBuilder或GongYuBuilder。
将获取到的house对象传入指挥者,指挥者让建造者进行建造。
public class MainClass { public static void main(String[] args) { HouseBuilder houseBuilder = new GongYuBuilder(); HouseDicrector hd = new HouseDicrector(houseBuilder); House house = houseBuilder.getHouse(); System.out.println(house.getFloor()); System.out.println(house.getHousetop()); System.out.println(house.getWall()); }}
执行结果如下:
注:代码来自网络教学视频,新手上路,理解不正确的地方敬请指出
0 0
- 设计模式学习笔记之建造者模式
- 设计模式学习笔记之建造者模式
- 设计模式学习笔记之建造者模式
- 设计模式学习笔记-建造者模式
- 设计模式学习笔记--建造者模式
- 设计模式学习笔记--建造者模式
- 设计模式笔记之---建造者模式
- 设计模式笔记之----建造者模式
- 设计模式之建造者模式学习
- java设计模式笔记之建造模式
- 设计模式学习笔记(十二)—Builder建造者模式
- java 设计模式 学习笔记(11) 建造者模式
- 设计模式学习笔记(5)建造者模式
- 设计模式学习笔记——建造者模式
- 设计模式学习笔记---建造者模式(Java版)
- 设计模式学习笔记——建造者模式
- C#设计模式学习笔记-建造者模式
- 设计模式学习笔记——建造者(Builder)模式
- IDEA 配置JUnit 并自动生成Test文件夹和类
- Eclipse安装Maven流程
- 常量关键词const
- Android app欢迎页面停留几秒的实现
- android Bitmap 存储为 bmp
- 设计模式学习笔记之建造者模式
- 关于Ubuntu同时安装opencv2和opencv3
- 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed,probable Oracle Net admin error
- 字节对齐学习
- 解决Eclipse提示@Override需要删除的问题
- 点击form表单中的button会触发页面刷新
- h3572最大流(未解决)
- Foj 2173 Nostop
- 常用SQL语句