关于builder模式的一点想法
来源:互联网 发布:ubuntu系统安装教程 编辑:程序博客网 时间:2024/05/16 09:46
当一个对象的创建需要复杂的步骤或过程,不妨把这个步骤或过程隔离和对象的创建动作本身隔离开来,这也就是builder模式的用武之地。
例如:
有某个类ClassA,它的对象在构造时有10个参数需要初始化。通常最容易想到的方法是为这个类添加一个含有10个参数的构造函数,然后在构造函数中验证每个参数的有效性,这样做会大大加大ClassA的构造函数的复杂性。
Class ClassA
{
public:
ClassA(int p1, int p2, int p3, int p4, ..., int p10)
{
if (p1 xxx p2 xxx ... p10)
{
xxxx;
}
config ClassA with p1~p10;
}
}
在这个情景下,我们可以把对p1~p10的验证代码从ClassA的构造函数中提取出来,封装到一个builder中,这样使ClassA的构造函数更加简洁。而当今后需求变动需要更改p1~p10的验证条件时,无需变动ClassA的构造函数。这也是OOD/P中封装变化思想的典型体现。
再有,有时候一个类的许多初始化参数并不能一下子准备妥当,这时可以把收集各个参数的过程封装到一个builder中,待所有参数完好后,由builder调用类的构造函数,创建出对象。
总之,builder模式的核心就是:把一个复杂类的对象的构建过程隔离封装起来。
例如:
有某个类ClassA,它的对象在构造时有10个参数需要初始化。通常最容易想到的方法是为这个类添加一个含有10个参数的构造函数,然后在构造函数中验证每个参数的有效性,这样做会大大加大ClassA的构造函数的复杂性。
Class ClassA
{
public:
ClassA(int p1, int p2, int p3, int p4, ..., int p10)
{
if (p1 xxx p2 xxx ... p10)
{
xxxx;
}
config ClassA with p1~p10;
}
}
在这个情景下,我们可以把对p1~p10的验证代码从ClassA的构造函数中提取出来,封装到一个builder中,这样使ClassA的构造函数更加简洁。而当今后需求变动需要更改p1~p10的验证条件时,无需变动ClassA的构造函数。这也是OOD/P中封装变化思想的典型体现。
再有,有时候一个类的许多初始化参数并不能一下子准备妥当,这时可以把收集各个参数的过程封装到一个builder中,待所有参数完好后,由builder调用类的构造函数,创建出对象。
总之,builder模式的核心就是:把一个复杂类的对象的构建过程隔离封装起来。
- 关于builder模式的一点想法
- 关于设计模式的一点想法
- 关于.net的一点想法
- 关于黄家驹的一点想法
- 关于UML的一点想法
- 关于Wiki 的一点想法
- 关于 EPO 的一点想法
- 关于屏蔽的一点想法
- 关于J2SE的一点想法
- 关于离开的一点想法
- 关于需求的一点想法
- 关于REST的一点想法
- 关于REST的一点想法
- 关于REST的一点想法
- 关于REST的一点想法
- 关于REST的一点想法
- 关于REST的一点想法
- 关于.net的一点想法
- 74LS245的问题
- too...to... 与 enough...to... 与 so...that...的区别
- Ext.form.ComboBox提交始终获得displayField的值-解决
- pragma指令简介
- C#中的析构函数
- 关于builder模式的一点想法
- 尝试
- 约束类触发器
- Python的亲戚们 (之一)
- Google Gears:离线应用并非唯一的使命
- RMAN Tablespace Point-in-Time Recovery (TSPITR)
- sss
- 国庆加班结束
- ASP.NET中如何弹出对话框