设计模式学习笔记--构建者模式
2018-04-01 23:38
239 查看
构建者模式:将一个复杂对象的构建与表示分离
由于构建者模式适用的是复杂的对象,而例子肯定不能太过复杂,所以以下例子无法完全体现构建者模式的用途
假设有一个计算机类,如果要实例话它,则需要给它设置主板,显示器,操作系统。
public class Computer {
private String mBoard;
private String mDisplay;
private String mOS;
//省略set,get方法
}
显然,一个完整的计算机实例需要具有以上所有属性,且在设置属性时,必须先设置主板,否则无法设置操作系统。而且很多时候,其操作系统都是一样的,呢么我们每次实例化一台计算机时,都要手动给他全部set一次吗?这显然是很糟糕的做法,而构建者模式正是解决这一系列问题的方案。public class ComputerBuilder {
private Computer mComputer;
private String mBoard;
private String mDisplay;
private String mOS="Win10";
//省略set,get方法
public ComputerBuilder setmBoard(String mBoard) {
this.mBoard = mBoard;
return this;
}
public ComputerBuilder setmDisplay(String mDisplay) {
this.mDisplay = mDisplay;
return this;
}
public ComputerBuilder setmOS(String mOS) {
this.mOS = mOS;
return this;
}
public Computer creat(){
mComputer=new Computer();
mComputer.setmBoard(mBoard);
mComputer.setmDisplay(mDisplay);
mComputer.setmOS(mOS);
return mComputer;
}
}
创建一个Builder类,这样我们就不再需要关注Computer的设置顺序,而且我们给定操作系统的默认值为Win10,这样一来,但系统是win10时我们就不再需要手动设置,而如果是其他系统,我们照常设置即可。
使用:
Computer mComputer = new ComputerBuilder().setmDisplay("设置显示屏").setmBoard("设置主板").creat();
Computer mComputerTow = new ComputerBuilder().setmDisplay("设置显示屏").setmBoard("设置主板").setmOS("设置操作系统").creat();这样我们就创建出了我们要的Computer对象。
当类的属性越多,限制越多的时候,构建者模式发挥的作用就会越大,以上例子构建者模式解决了在不改变Computer类的情况下,属性设置的顺序,给定属性的默认值两个问题。
由于构建者模式适用的是复杂的对象,而例子肯定不能太过复杂,所以以下例子无法完全体现构建者模式的用途
假设有一个计算机类,如果要实例话它,则需要给它设置主板,显示器,操作系统。
public class Computer {
private String mBoard;
private String mDisplay;
private String mOS;
//省略set,get方法
}
显然,一个完整的计算机实例需要具有以上所有属性,且在设置属性时,必须先设置主板,否则无法设置操作系统。而且很多时候,其操作系统都是一样的,呢么我们每次实例化一台计算机时,都要手动给他全部set一次吗?这显然是很糟糕的做法,而构建者模式正是解决这一系列问题的方案。public class ComputerBuilder {
private Computer mComputer;
private String mBoard;
private String mDisplay;
private String mOS="Win10";
//省略set,get方法
public ComputerBuilder setmBoard(String mBoard) {
this.mBoard = mBoard;
return this;
}
public ComputerBuilder setmDisplay(String mDisplay) {
this.mDisplay = mDisplay;
return this;
}
public ComputerBuilder setmOS(String mOS) {
this.mOS = mOS;
return this;
}
public Computer creat(){
mComputer=new Computer();
mComputer.setmBoard(mBoard);
mComputer.setmDisplay(mDisplay);
mComputer.setmOS(mOS);
return mComputer;
}
}
创建一个Builder类,这样我们就不再需要关注Computer的设置顺序,而且我们给定操作系统的默认值为Win10,这样一来,但系统是win10时我们就不再需要手动设置,而如果是其他系统,我们照常设置即可。
使用:
Computer mComputer = new ComputerBuilder().setmDisplay("设置显示屏").setmBoard("设置主板").creat();
Computer mComputerTow = new ComputerBuilder().setmDisplay("设置显示屏").setmBoard("设置主板").setmOS("设置操作系统").creat();这样我们就创建出了我们要的Computer对象。
当类的属性越多,限制越多的时候,构建者模式发挥的作用就会越大,以上例子构建者模式解决了在不改变Computer类的情况下,属性设置的顺序,给定属性的默认值两个问题。
相关文章推荐
- 设计模式学习笔记——桥接(Bridge)模式
- 设计模式学习笔记(五):建造者模式【Builder Pattern】(三)问题引申
- 设计模式学习笔记——组合(Composite)模式
- 设计模式学习笔记--适配器模式
- 设计模式学习笔记——Template Method模板方法模式
- Java-马士兵设计模式学习笔记-观察者模式-OOD 封装Listener
- Java-马士兵设计模式学习笔记-观察者模式-读取properties文件,动态增加观察者
- 设计模式学习笔记之Singleton模式
- 设计模式学习笔记--过滤器模式
- 设计模式学习笔记--解释器模式
- C++设计模式学习笔记三:策略模式
- 步步为营 .NET 设计模式学习笔记 一、开篇(设计模式之泡妞二十三招)
- 设计模式学习笔记1:UML统一建模语言初学
- 设计模式学习笔记—23个模式
- 步步为营 .NET 设计模式学习笔记 十六、Facade(外观模式)
- 设计模式学习笔记---职责链模式chain of responsibility(Java版)
- Java-马士兵设计模式学习笔记-观察者模式-模拟Awt Button
- 设计模式C++学习笔记之十七(Chain of Responsibility责任链模式)
- 设计模式学习笔记——模板方法模式
- C++设计模式学习笔记四:代理模式