淘客熙熙

主题:【文摘】二月春风--关于编程的,不喜勿进 -- 柚子

共:💬20 🌺7 新:
全看树展主题 · 分页首页 上页
/ 2
下页 末页
家园 【文摘】二月春风--关于编程的,不喜勿进

外链出处

家园 此君乃绝顶高手

佩服之极,不知有无可能引来河里?

家园 他就在西西河呀。

刘新宇是编程高手,文字功底也很深厚。

小两口共用一个ID,是我第一个看出来的。

家园 哈哈, 这回你错了。我说他在河里,没有说他用我的 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交流起来,不知是何等热闹的情景!

家园 hehe ,他在国内呢,这个有难度。。。
家园 这个系列写得很好!

赞一个!

不如到河里专门开个专题。

家园 关于资源管理

自己做个Garbage Collector毕竟还是太麻烦。

现在一般的处理方法,是用smart pointer来解决这个问题。

到了C#,大家就不用操这个心了,CLR会自动帮你管理。

家园 我最喜欢的关于c++编程的书

Advanced C++ Programming Styles and Idioms, by James Coplien。十来年的老书了,真经典也。不过当时学了一堆OO的花拳绣腿唬人,现在最多用c写写网络和系统内核,这些都忘得差不多了。

家园 谢谢, 我转给他了。反正谁跟我谈电脑,我都用无限

崇拜的眼光看着他。赫赫

全看树展主题 · 分页首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河