首页 > 代码库 > Java 设计模式:创建者模式
Java 设计模式:创建者模式
1、什么是创建者模式
创建者模式(Builder)是将一个复杂的对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示。比如就建造房子为例,现实生活中房子的样子是各种各样的,而且每座房子内的格局、大小等等都不一样,但是建造房子的流程基本都是一样的。创建者模式就是创建的流程保持不变,但是流程中每一步的细节是可以变化的,从而创建出不同的产品。
创建者模式中包括以下几个角色
(1)、Builder
抽象建造者类,规定了产品的各个组成部分,并声明获取建造完成后产品的抽象方法。
(2)、ConcreteBuilder
具体建造者类,根据不同对象的创建逻辑,具体化创建过程,建造完成后可以获取具体产品。
(3)、Director
指挥者类,调用不同的创建者建造具体产品的各个组成部分,保证具体产品各个部分按固定流程创建。
(3)、Product
要创建的产品,有不同的部件组成。
2、同样使用《大话设计模式》中造小人的例子用Java实现。
在游戏角色中需要创建人物,人物包括头、手、身体、脚等信息,但是又分为胖的人物和瘦的人物。代码如下
(1)、设计产品类 People
class People{ private List<String> parts = new ArrayList<String>(); public void addPart(String part) { this.parts.add(part); } public void show() { System.out.println("产品信息......."); for (int i = 0; i < parts.size(); i++) { System.out.println(parts.get(i)); } }}
(2)、设计抽象建造者类IBuilder
interface IBuilder{ public void buildHead(); public void buildBody(); public void buildHand(); public void buildFeet(); public People getBuildPeople();}
(3)、设计具体建造者类FatPeopleBuilder和ThinPeopleBuilder
1 class FatPeopleBuilder implements IBuilder 2 { 3 private People fatpeople = new People(); 4 5 @Override 6 public void buildHead() 7 { 8 // TODO Auto-generated method stub 9 fatpeople.addPart("胖人的头");10 }11 12 @Override13 public void buildBody()14 {15 // TODO Auto-generated method stub16 fatpeople.addPart("胖人的身体");17 }18 19 @Override20 public void buildHand()21 {22 // TODO Auto-generated method stub23 fatpeople.addPart("胖人的手");24 }25 26 @Override27 public void buildFeet()28 {29 // TODO Auto-generated method stub30 fatpeople.addPart("胖人的脚");31 }32 33 @Override34 public People getBuildPeople()35 {36 // TODO Auto-generated method stub37 return fatpeople;38 }39 }40 41 class ThinPeopleBuilder implements IBuilder42 {43 44 private People thinpeople = new People();45 46 @Override47 public void buildHead()48 {49 // TODO Auto-generated method stub50 thinpeople.addPart("瘦人的头");51 }52 53 @Override54 public void buildBody()55 {56 // TODO Auto-generated method stub57 thinpeople.addPart("瘦人的身体");58 }59 60 @Override61 public void buildHand()62 {63 // TODO Auto-generated method stub64 thinpeople.addPart("瘦人的手");65 }66 67 @Override68 public void buildFeet()69 {70 // TODO Auto-generated method stub71 thinpeople.addPart("瘦人的脚");72 }73 74 @Override75 public People getBuildPeople()76 {77 // TODO Auto-generated method stub78 return thinpeople;79 }80 81 }
(4)、设计调度类Director
class Director{ public void build(IBuilder builder) { builder.buildBody(); builder.buildFeet(); builder.buildHand(); builder.buildHead(); }}
(5)、测试
public class BuilderTest{ public static void main(String args[]) { Director director = new Director(); IBuilder builder = new FatPeopleBuilder(); // 创建胖人 director.build(builder); builder.getBuildPeople().show(); // 创建瘦人 builder = new ThinPeopleBuilder(); director.build(builder); builder.getBuildPeople().show(); }}
创建者模式的好处是客户端不必关系产品对象的具体组成细节,具体的建造者之间相互独立方便扩展。
Java 设计模式:创建者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。