Builder设计模式原理
2017-06-26 20:21
211 查看
通过本篇的学习,您将掌握:
1、什么是Builder模式
2、Builder模式的运用场景
3、如何封装Builder模式
4、如何使用封装Builder
一、什么是Builder模式
是一步一步创建一个复杂对象的创建型模式,允许用户在不知道内部构建的细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦。使得构建过程和部件的表示隔离开来。
二、Builder模式的应用场景
1、相同的方法,不同的执行顺序,产生不同的事件结果时。
2、多个部件或零件,都可以装配到一个对象中,但产生的结果又不相同时。
3、产品非常复杂
4、当初始化一个对象特别复杂,如参数多的时候
三、Builder的封装
builder模式主要由三大块组成:
1、产品的抽象类
2、抽象Builder类,规范产品的组建
3、Builder的具体类。实现对抽象Bilder类的继承,实现具体的功能
通过一个demo的具体代码来体现Builder在项目中的具体使用:
1、产品抽象类
2、Builder抽象类:
3、Builder的实现类:
4、最后,我们看下怎么调用我们封装好的Builder模式:
1、什么是Builder模式
2、Builder模式的运用场景
3、如何封装Builder模式
4、如何使用封装Builder
一、什么是Builder模式
是一步一步创建一个复杂对象的创建型模式,允许用户在不知道内部构建的细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦。使得构建过程和部件的表示隔离开来。
二、Builder模式的应用场景
1、相同的方法,不同的执行顺序,产生不同的事件结果时。
2、多个部件或零件,都可以装配到一个对象中,但产生的结果又不相同时。
3、产品非常复杂
4、当初始化一个对象特别复杂,如参数多的时候
三、Builder的封装
builder模式主要由三大块组成:
1、产品的抽象类
2、抽象Builder类,规范产品的组建
3、Builder的具体类。实现对抽象Bilder类的继承,实现具体的功能
通过一个demo的具体代码来体现Builder在项目中的具体使用:
1、产品抽象类
public abstract class People { protected String mName; protected String mAge; @Override public String toString() { return "People{" + "mName='" + mName + '\'' + ", mAge='" + mAge + '\'' + ", mSex='" + mSex + '\'' + '}'; } protected String mSex; public People setName(String name){ this.mName = name; return null; } public People setAge(String age){ this.mAge = age; return null; } public abstract void setmSex(); }
2、Builder抽象类:
public abstract class Builder { protected abstract Builder setBuildName(String name); protected abstract Builder setBuildAge(String age); protected abstract Builder setBuildSex(); protected abstract People Create(); public static class ManPeople extends People { public ManPeople(){} @Override public void setmSex() { mSex = "男生"; } } }
3、Builder的实现类:
public class PeopleBuilder extends Builder { People people = new ManPeople(); @Override public PeopleBuilder setBuildName(String name) { people.setName(name); return this; } @Override public PeopleBuilder setBuildAge(String age) { people.setAge(age); return this; } @Override public PeopleBuilder setBuildSex() { people.setmSex(); return this; } @Override public People Create() { return people; } }
4、最后,我们看下怎么调用我们封装好的Builder模式:
People people = new PeopleBuilder() .setBuildSex() .setBuildAge("15") .setBuildName("小米") .Create(); Log.i(TAG,"people:"+people.toString())
相关文章推荐
- java中Builder设计模式 原理和好处
- [用设计模式锻炼C#系列]之Builder
- 设计模式第3篇Builder(第二部分)
- C#设计模式之建造者(Builder)模式示例源代码
- 浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式]
- C#设计模式之建造者(Builder)模式示例源代码
- .NET设计模式(4):建造者模式(Builder Pattern)
- 用Java实现的设计模式系列(3)--Builder
- 设计模式之生成器(Builder)----对象创建型模式
- 设计模式袖珍版 连续转载之 - Builder
- 设计模式PHP5实现之----生成器(Builder)
- 设计模式第3篇Builder(第一部分)
- (转)设计模式(Design Patterns)笔记之四:Builder yakuu [原作]
- 设计模式之C#实现---Builder
- Java设计模式:Builder(建设者模式)
- 设计模式之C#实现(二)---Builder
- 设计模式之Builder——购机篇(原创)
- 学习设计模式(一) Builder
- .NET设计模式(4):建造者模式(Builder Pattern)
- 学习设计模式之生成器(Builder Pattern)模式