首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计形式-建造者模式(builder pattern)

2013-07-16 
设计模式----建造者模式(builder pattern)CarModel.java代码如下:package com.designPattern.builderimpo

设计模式----建造者模式(builder pattern)
CarModel.java代码如下:

package com.designPattern.builder;import java.util.ArrayList;public abstract class CarModel {private ArrayList<String> sequence = new ArrayList<String>();protected abstract void start();protected abstract void stop();protected abstract void alarm();protected abstract void engineBoom();public final void run(){for(int i=0;i<this.sequence.size();i++){String actionName = this.sequence.get(i);if(actionName.equals("start")){this.start();}else if(actionName.equals("stop")){this.stop();}else if(actionName.equals("alarm")){this.alarm();}else if(actionName.equals("engineBoom")){this.engineBoom();}}}public final void setSequence(ArrayList<String> sequence){this.sequence = sequence;}}


BenzModel.java代码如下:
package com.designPattern.builder;public class BenzModel extends CarModel{@Overrideprotected void start() {System.out.println("奔驰启动!");}@Overrideprotected void stop() {System.out.println("奔驰停车!");}@Overrideprotected void alarm() {System.out.println("奔驰鸣笛!");}@Overrideprotected void engineBoom() {System.out.println("奔驰发动机启动!");}}


BMWModel.java代码如下:
package com.designPattern.builder;public class BMWModel extends CarModel{@Overrideprotected void start() {System.out.println("宝马启动!");}@Overrideprotected void stop() {System.out.println("宝马停车!");}@Overrideprotected void alarm() {System.out.println("宝马鸣笛!");}@Overrideprotected void engineBoom() {System.out.println("宝马发动机启动!");}}


CarBuilder.java代码如下:

package com.designPattern.builder;import java.util.ArrayList;public abstract class CarBuilder {public abstract void setSequence(ArrayList<String> sequence);public abstract CarModel getCarModel();}


BenzBuilder.java代码如下:
package com.designPattern.builder;import java.util.ArrayList;/** * 建造者 * @author yangjianzhou * */public class BenzBuilder extends CarBuilder{private BenzModel benz = new BenzModel();@Overridepublic void setSequence(ArrayList<String> sequence) {this.benz.setSequence(sequence);}@Overridepublic CarModel getCarModel() {return this.benz;}}


BMWBuilder.java代码如下:
package com.designPattern.builder;import java.util.ArrayList;/** * 建造者 * @author yangjianzhou * */public class BMWBuilder extends CarBuilder{private BMWModel bmwModel = new BMWModel();@Overridepublic void setSequence(ArrayList<String> sequence) {this.bmwModel.setSequence(sequence);}@Overridepublic CarModel getCarModel() {return this.bmwModel;}}


Director.java代码如下:
package com.designPattern.builder;import java.util.ArrayList;/** * 设置车子的启动顺序 * @author yangjianzhou * */public class Director {private ArrayList<String> sequence = new ArrayList<String>();private BenzBuilder benzBuilder = new BenzBuilder();private BMWBuilder bmwBuilder = new BMWBuilder();public BenzModel getABenzModel(){this.sequence.clear();this.sequence.add("start");this.sequence.add("stop");this.benzBuilder.setSequence(sequence);return (BenzModel)this.benzBuilder.getCarModel();}public BenzModel getBBenzModel(){this.sequence.clear();this.sequence.add("engineBoom");this.sequence.add("start");this.sequence.add("stop");this.benzBuilder.setSequence(sequence);return (BenzModel)this.benzBuilder.getCarModel();}public BMWModel getCBMWModel(){this.sequence.clear();this.sequence.add("alarm");this.sequence.add("start");this.sequence.add("stop");this.bmwBuilder.setSequence(sequence);return (BMWModel)this.bmwBuilder.getCarModel();}public BMWModel getDBMWModel(){this.sequence.clear();this.sequence.add("start");this.bmwBuilder.setSequence(sequence);return (BMWModel)this.bmwBuilder.getCarModel();}}


Client.java代码如下:
package com.designPattern.builder;public class Client {public static void main(String[] args) {Director director = new Director();System.out.println("==============奔驰A=================");director.getABenzModel().run();System.out.println("==============奔驰B=================");director.getBBenzModel().run();System.out.println("==============宝马C=================");director.getCBMWModel().run();System.out.println("==============宝马D=================");director.getDBMWModel().run();}}


运行结果如下:
==============奔驰A=================奔驰启动!奔驰停车!==============奔驰B=================奔驰发动机启动!奔驰启动!奔驰停车!==============宝马C=================宝马鸣笛!宝马启动!宝马停车!==============宝马D=================宝马启动!

热点排行