词条 | 创建者模式 |
释义 | 概述java23种设计模式之一,英文叫Builder Pattern。其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离,使得构件算法和组装方式可以独立应对变化;复用同样的构建算法可以创建不同的表示,不同的构建过程可以复用相同的部件组装方式。 主要优缺点在创建者模式中,客户端不再负责对象的创建与组装,而是把这个对象创建的责任交给其具体的创建者类,把组装的责任交给组装类,客户端支付者对象的调用,从而明确了各个类的职责。 虽然利用创建者模式可以创建出不同类型的产品,但是如果产品之间的差异巨大,则需要编写多个创建者类才能实现,如果这是结合工厂模式更好。 组成部分创建者模式主要由五个部分构成:组装类,抽象创建者类,实现抽象创建者类的具体创建者类,抽象产品和实现抽象产品的具体产品类。 代码示例// Person publicclassPerson { privateString head; privateString body; privateString foot; publicString getHead() { return head; } publicvoidsetHead(String head) { this.head= head; } publicString getBody() { return body; } publicString getFoot() { return foot; } publicvoidsetFoot(String foot) { this.foot= foot; } publicvoidsetBody(String body) { this.body= body; } } //Builder接口 publicinterfacePersonBuilder{ voidbuildHead(); voidbuildBody(); voidbuildFoot(); Person buildPerson(); } //Builder实现:人类 publicclassHumanBuilder implementsPersonBuilder { privatePerson person; publicHumanBuilder(){ this.person=newPerson(); } publicvoidbuildBody() { this.person.setBody("创建 人类 身体!"); } publicvoidbuildFoot() { this.person.setFoot("创建 人类 脚!"); } publicvoidbuildHead() { this.person.setHead("创建 人类 头!"); } publicPerson buildPerson() { return person; } } //Builder实现:变形金刚 publicclassTransformerBuilder implementsPersonBuilder { privatePerson person; publicTransformerBuilder(){ this.person=newPerson(); } publicvoidbuildBody() { this.person.setBody("创建 变形金刚 身体!"); } publicvoidbuildFoot() { this.person.setFoot("创建 变形金刚 脚!"); } publicvoidbuildHead() { this.person.setHead("创建 变形金刚 头!"); } publicPerson buildPerson() { return person; } } //Director构建向导 publicclassPersonDirector { publicPerson constructPerson(PersonBuilder pb) { pb.buildHead(); pb.buildBody(); pb.buildFoot(); returnpb.buildPerson(); } } //测试 publicclassTest { publicstaticvoidmain(String[] args) { PersonDirector pd = newPersonDirector(); Person person = pd.constructPerson(newHumanBuilder()); System.out.println(person.getBody()); System.out.println(person.getFoot()); System.out.println(person.getHead() +" \"); Person transformer = pd.constructPerson(newTransformerBuilder()); System.out.println(transformer.getBody()); System.out.println(transformer.getFoot()); System.out.println(transformer.getHead()); } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。