您的位置:首页 > 其它

设计模式学习笔记--构建者模式

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类的情况下,属性设置的顺序,给定属性的默认值两个问题。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: