3 设计模式之构建者模式(三)
来源:互联网 发布:什么是网络贷款诈骗 编辑:程序博客网 时间:2024/06/07 04:01
在应用中我们通常会创建一些类型相同的对象,但是这些对象又有不同的内部表示,不过构造这些对象的方法或者顺序都是一致的,只不过具体的内部表示不一样而已,这个时候我们就可以使用所谓的构建者模式,它专门会构造这种类型的对象提供了便于扩展的解决方案,它把对象的构建与表示分离,使得相同的构造过程可以表示不同的对象。下面是构建者模式客户端的组装代码:
public class PersonBuilderClient {private String TAG = "PersonBuilderClient";@Testpublic void test() {PersonDirector personDirector = new PersonDirector();PersonThinBuilder personThinBuilder = new PersonThinBuilder();personDirector.builderPerson(personThinBuilder);Person personThin = personThinBuilder.getPerson();System.out.println(TAG + " personThin = " + personThin);PersonFatBuilder personFatBuilder = new PersonFatBuilder();personDirector.builderPerson(personFatBuilder);Person personFat = personFatBuilder.getPerson();System.out.println(TAG + " peronFat = " + personFat);}}下面是相关的接口与实现类:
1 PersonDirector.java
它根据提供的PersonBuilderImpl(其实它真正的对象是实现该抽象类的不同对象)来构造不同的Person,它虽然调用相同的构造代码(相同的构造过程),但是它会根据不同的PersonBuilderImpl构造出不同的Person对象(),
package com.ops.builder.base;import com.ops.builder.PersonBuilderImpl;public class PersonDirector {private PersonBuilderImpl pbImpl = null;public PersonDirector() {}public void builderPerson(PersonBuilderImpl pb) {this.pbImpl = pb;this.pbImpl.createHead();this.pbImpl.createBody();this.pbImpl.createHand();this.pbImpl.createLeg();}}
2 PersonBuilder.java、PersonBuilderImpl.java
根据Person需要的方法接口,由于构造过程中需要构造左右手、左右腿,所以我把他们放在一个PersonBuilderImpl抽象类中了,具体的Builder类则需要继续于PersonBuilderImpl抽象类,例如这里的PersonFatBuilder、PersonThinBuilder,它就是具体的构造类了,这里我就不粘出它的代码了。这里只给出接口及抽象类的代码,具体的代码请到后面的文章获取整个代码工程,下面是接口与抽象类代码:
package com.ops.builder;public interface PersonBuilder {public void createHead();public void createBody();public void createHand();public void createLeg();public Person getPerson();}package com.ops.builder;public abstract class PersonBuilderImpl implements PersonBuilder{protected Person person = null;abstract public void createHandLeft();abstract public void createHandRight();abstract public void createLegLeft();abstract public void createLegRight();public PersonBuilderImpl() {this.person = new Person();}@Overridepublic void createHead() {}@Overridepublic void createBody() {}@Overridepublic void createHand() {createHandLeft();createHandRight();}@Overridepublic void createLeg() {createLegLeft();createLegRight();}@Overridepublic Person getPerson() {return person;}}
0 0
- 3 设计模式之构建者模式(三)
- 设计模式学习之构建者模式
- 《Java设计模式》之构建者模式
- Java设计模式之构建者模式
- 设计模式之构建者模式
- 设计模式之构建者Builder模式
- 设计模式之Builder构建者模式
- 设计模式之05构建者模式(笔记)
- 设计模式学习之构建者模式(Builder)
- JAVA设计模式之——构建者设计模式
- 设计模式三之装饰者模式
- 设计模式三之装饰者模式
- 设计模式之装饰者模式 三
- 设计模式之备忘录模式(三)
- 设计模式之(三)Proxy模式
- 设计模式之观察者模式(三)
- 设计模式(三)之访问者模式
- 3、设计模式之三
- Hbase常用命令行总结
- 对称加密、非对称加密和散列计算的简单总结
- Android IntentFilter 匹配原则浅析
- DTree的学习与使用 Dtree点击展开获取json数据
- iOS获取plist全路径
- 3 设计模式之构建者模式(三)
- 第十二周阅读程序1
- 层次分析法(Analytic Hierarchy Process)
- https://leetcode.com/problems/candy/
- 高级部分 Volley框架的Post请求的使用
- 浅谈字符串匹配的KMP算法
- Longest Valid Parentheses (求最长有效匹配括号子串的长度)
- PHP中如何返回前一页并刷新页面
- POJ2274【CEOI2003】The Race