建造者模式

来源:互联网 发布:淘宝极有家可靠吗 编辑:程序博客网 时间:2024/06/11 05:17

一、什么是建造者模式

    Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。

二、建造者模式的结构

三、建造者模式应用场景

- 对象的创建:Builder模式是为对象的创建而设计的模式

- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象

- 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法

package com.dw.test;/* * 工程队 */public interface HouseBuilder {   public void makeFloor();   public void makeWall();   public void makeHousetop();   public House getHouse();}

package com.dw.test;//设计者public class HouseDirector {   public void makeHouse(HouseBuilder builder)   {   builder.makeFloor();   builder.makeWall();   builder.makeHousetop();   }}

package com.dw.test;//修平方public class PingFangBuilder implements HouseBuilder {     House house=new House();     @Override     public House getHouse()     {     return this.house;     }@Overridepublic void makeFloor() {house.setFloor("修平房-->地板");}@Overridepublic void makeWall() {house.setWall("平房-->墙");}@Overridepublic void makeHousetop() {house.setHousetop("平方-->屋顶");}}

package com.dw.test;//房子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;}}

package com.dw.test;public class MainClass {/*一、什么是建造者模式Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。   三、建造者模式应用场景  对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象- 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法*/public static void main(String[] args) {//由工程队来修HouseBuilder builder=new PingFangBuilder();/*builder.makeFloor();builder.makeWall();builder.makeHousetop();*///给设计者来做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()); }}


0 0
原创粉丝点击