JAVA设计模式之建造者模式原理与用法详解
本文实例讲述了JAVA设计模式之建造者模式定义与用法。分享给大家供大家参考,具体如下:
建造者模式:将复杂对象的构造与它的实现相分离,让相同的构建过程可以创建不同的对象。
适用场合:
复杂对象的算法应该独立于该对象的组成部分或当构造过程允许被构造不同的对象时。
组成角色:
1创建者(Builder)接口:为创建一个对象的对应部件所指定抽象接口。
2具体创建者(ConcreteBuilder):实现Builder的接口以构造对象的各个部件。
3具体创建者管理对象(Director):使用Builder接口的对象。
4复杂产品对象(Product):被构造的复杂对象。
/** *生产汽车:创建者Builder接口 *@description: *@date2016-1-21下午1:15:39 */ publicinterfaceCarBuilder{ voidcarRoof();//生产车顶 voidcarBottom();//生产车底盘 voidcarWheel();//生产车轮 CarbuildCar(); }
/** *具体创建对象ConcreteBuilder:白色汽车 *@description: *@date2016-1-21下午1:16:22 */ publicclassWhiteCarimplementsCarBuilder{ Carcar; publicWhiteCar(){ car=newCar(); } @Override publicvoidcarRoof(){ car.setRoof("制造白色汽车---车顶"); } @Override publicvoidcarBottom(){ car.setBottom("制造白色汽车---车底"); } @Override publicvoidcarWheel(){ car.setWheel("制造白色汽车---车轮"); } @Override publicCarbuildCar(){ //TODOAuto-generatedmethodstub returncar; } }
/** *具体创建者管理对象(Director),建造者 *@description: *@authorldm *@date2016-1-21下午1:17:12 */ publicclassCarDirector{ publicCarconstructPerson(CarBuildercarBuilder){ carBuilder.carRoof(); carBuilder.carBottom(); carBuilder.carWheel(); returncarBuilder.buildCar(); } }
/** *最终生产的'复杂产品'对象 *@description: *@date2016-1-21下午1:22:28 */ publicclassCar{ privateStringroof;//车顶 privateStringbottom;//车底 privateStringwheel;//车轮 publicStringgetRoof(){ returnroof; } publicvoidsetRoof(Stringroof){ this.roof=roof; } publicStringgetBottom(){ returnbottom; } publicvoidsetBottom(Stringbottom){ this.bottom=bottom; } publicStringgetWheel(){ returnwheel; } publicvoidsetWheel(Stringwheel){ this.wheel=wheel; } }
测试代码:
publicclassTest{ publicstaticvoidmain(String[]args){ CarDirectorcarDirector=newCarDirector(); Carcar=carDirector.constructPerson(newWhiteCar()); System.out.println(car.getRoof()); System.out.println(car.getBottom()); System.out.println(car.getWheel()); System.out.println("----整个车子就完成了!--"); } }
打印结果:
制造白色汽车—车顶 制造白色汽车—车底 制造白色汽车—车轮 —-整个车子就完成了!–
更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。