请输入您要查询的百科知识:

 

词条 创建者模式
释义

概述

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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 13:50:34