BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #24837同步于 2008/4/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助]问个关于设计模式的问题

FadeToBlack
2008/4/6镜像同步4 回复
写了个程序,想实现如下功能。 1、有一个vector<sth> v1 2、用stable_sort()对v1里面的内容排序。有一个Function Obj Less(sth1, sth2)用来判断sth1,sth2大小。 3、查找v1里符合一定要求的元素,保存到一个vector<vector<sth>::iterator> v2里,对v2按照iterator指向元素的大小排序,然后留待后用。 现在的问题是,Less()只能接受sth参数,而不能接受指向std的iterator参数。但是再写个吧又嫌麻烦。不知道各位有没有什么好点的方法介绍介绍。 谢谢拉!
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
ericyosho机器人#1 · 2008/4/6
不是说使用了设计模式,就能把原来没有的功能给实现出来了。 而是说使用了设计模式,更好地把自己想写的东西组织到一起,方便以后的维护。 简单地说,给自己的房间打扫卫生,整理整理,不会让房间里多出个沙发来。
FadeToBlack机器人#2 · 2008/4/6
是我没说清楚。我想知道有什么好一点的思路可以设计的好看一些。不想为了单纯一个buffer的排序在写一个函数或是在定义一个func obj. 【 在 ericyosho 的大作中提到: 】 : 不是说使用了设计模式,就能把原来没有的功能给实现出来了。 : 而是说使用了设计模式,更好地把自己想写的东西组织到一起,方便以后的维护。 : 简单地说,给自己的房间打扫卫生,整理整理,不会让房间里多出个沙发来。
ericyosho机器人#3 · 2008/4/6
模式的作用是把相同的东西放在一起,不同的东西做活了。 你这两个区别是在参数上,所以用模式也是把sth和iter的对象做个抽象。 比如说你可以创建一个类叫做Lessarg,然后从sth和iter分别做成它的子类,分别实现Less函数。 你的代码调用的时候只是去调用Lessarg类型的参数,然后new的时候是sth的话,就做Less(sth), new的时候是iter的话,就做Less(iter) 还是觉得小题大作了。其实就是个普通的函数名相同,参数不同的重载么。
FadeToBlack机器人#4 · 2008/4/6
我再想一想。THX! 【 在 ericyosho 的大作中提到: 】 : 模式的作用是把相同的东西放在一起,不同的东西做活了。 : 你这两个区别是在参数上,所以用模式也是把sth和iter的对象做个抽象。 : 比如说你可以创建一个类叫做Lessarg,然后从sth和iter分别做成它的子类,分别实现Less函数。 : ...................