- 程序有所改变。发帖如还有问题请报告
- 【征集】西西河的经济学,及清流措施,需要主动参与者,『稷下学宫』新认证方式,24年网站打算和努力目标
主题:【文摘】二月春风--关于编程的,不喜勿进 -- 柚子
佩服之极,不知有无可能引来河里?
刘新宇是编程高手,文字功底也很深厚。
小两口共用一个ID,是我第一个看出来的。
有需要帮忙的话,你可以直接在他的 blog上留言
不过,有点异议,
现在这个静态的类型安全工厂,有没有缺点呢?有,那就是不能利用思路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");
}
}
只要把“随机产生”这个逻辑移到上一层即可。
是我自己判断出来的。
只是在想他和HIGHWAY交流起来,不知是何等热闹的情景!
赞一个!
不如到河里专门开个专题。
自己做个Garbage Collector毕竟还是太麻烦。
现在一般的处理方法,是用smart pointer来解决这个问题。
到了C#,大家就不用操这个心了,CLR会自动帮你管理。
Advanced C++ Programming Styles and Idioms, by James Coplien。十来年的老书了,真经典也。不过当时学了一堆OO的花拳绣腿唬人,现在最多用c写写网络和系统内核,这些都忘得差不多了。
崇拜的眼光看着他。赫赫