主题:【文摘】二月春风--关于编程的,不喜勿进 -- 柚子
不过,有点异议,
现在这个静态的类型安全工厂,有没有缺点呢?有,那就是不能利用思路1,也就是不能随机产生对象,而制作出千奇百怪的植物模型。但是它也许能实现思路2,就是利用一组DNA作为模板,来生成特定模式的植物。
采用SafeNodeFactory还是可以随机产生对象,不过是再增加一层Abstraction layer而已。
稍微修改一下NodeFactory到RandomNodeFactory专门用于随机产生Node的case,
class RandomNodeFactory{
public:
static Node* Create(){
int type=rand()%4;
switch(type){
case 0:
return SafeNodeFactory<Branch>::Create();
case 1:
return SafeNodeFactory<Leaf>::Create();
case 2:
return SafeNodeFactory<Fruit>::Create();
case 4:
return SafeNodeFactory<Flower>::Create();
default:
throw runtime_error("unknown type");
}
}
};
或者简单用一个函数(也可以inline),
Node* RandomCreate()
{
int type=rand()%4;
switch(type){
case 0:
return SafeNodeFactory<Branch>::Create();
case 1:
return SafeNodeFactory<Leaf>::Create();
case 2:
return SafeNodeFactory<Fruit>::Create();
case 4:
return SafeNodeFactory<Flower>::Create();
default:
throw runtime_error("unknown type");
}
}
只要把“随机产生”这个逻辑移到上一层即可。
- 相关回复 上下关系8
国内不能上西西河么? 无斋主人 字32 2006-02-22 12:40:51
🙂我在国内就只能看不能写帖子 柚子 字0 2006-02-22 22:50:48
我也在国内,什么都能干呀 睡虫 字18 2006-02-24 02:54:16
好文!
🙂谢,我已经转给他了。 柚子 字0 2006-02-20 23:46:00
🙂此君乃绝顶高手 1 懒厨 字34 2006-02-20 06:58:50
🙂他比较忙, 不过我已经跟他说过了。 柚子 字43 2006-02-20 22:45:05
🙂帮忙倒是谈不上 懒厨 字57 2006-02-21 06:32:48