怎样处理功能相同的函数

lw1a2 2009-04-11 10:42:59
假设有两个不相关的类A和B
A、B内有两个函数,实现完全相同的功能(例如查询某个数据库表)
为了消除重复代码,应该怎样处理这两个函数?

现在的处理方法是将这两个函数提到一个工具类里,合并为一个函数,然后由A和B来调用这个工具类的方法
觉得工具类的存在,似乎不太符合面向对象的要求
...全文
83 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hityct1 2009-04-11
关注一下。我觉得设计成一个独立函数就可以了。另外让我想起了模板方法模式,可惜学的不过精,糊涂。
  • 打赏
  • 举报
回复
lw1a2 2009-04-11
[Quote=引用 2 楼 akirya 的回复:]
没什么合面向对象的做法.

方便 易维护 扩展即可.
[/Quote]
系统里面充斥这许多工具类,看着很不爽
  • 打赏
  • 举报
回复
lw1a2 2009-04-11
[Quote=引用 1 楼 ylywyn136 的回复:]
删除 A类里的这个函数,将B类的这个函数设成A类的友元
[/Quote]
友元封装的杀手
  • 打赏
  • 举报
回复
ylywyn136 2009-04-11
晕.这是一楼的 方法..
  • 打赏
  • 举报
回复
jieao111 2009-04-11
想起青润老大的blog“拜托,不要再本本主义了”
  • 打赏
  • 举报
回复
mengde007 2009-04-11
藐视6楼的方法可行。
  • 打赏
  • 举报
回复
把其中一个类里(如A)的该功能函数去掉,然后声明A为B的友元,需要的时候,直接调用。
  • 打赏
  • 举报
回复
ch1oE 2009-04-11
符合应用的即可。

PS:面向对象的要求是什么?是什么?是什么?理论是在实践的基础上作出的总结,但绝不是死律。
  • 打赏
  • 举报
回复
Cloud_drift 2009-04-11
这个工具类的功能很像是接口的功能嘛,这不正是面向对象的一部分吗?
  • 打赏
  • 举报
回复
morris88 2009-04-11
将这两个函数提出来,设计成模版
  • 打赏
  • 举报
回复
没什么合面向对象的做法.

方便 易维护 扩展即可.
  • 打赏
  • 举报
回复
ylywyn136 2009-04-11
删除 A类里的这个函数,将B类的这个函数设成A类的友元
  • 打赏
  • 举报
回复
我不知道为啥一定要封装到类中.
有时候想的太复杂了结果最简单的方法没用上,或许是你已经认定了某种解决方法.
  • 打赏
  • 举报
回复
lw1a2 2009-04-11
[Quote=引用 13 楼 hiboys 的回复:]
用最简单的继承就行了。
supperclass中定义此方法。
多个subclass都可以继承supperclass从而“免费”使用此方法了。
c++有多继承。不影响你的子类继承其他父类。java的话用接口更合适些。
接口是实现AOP的简单方案
[/Quote]
两个不相关的类都继承一个父类....
  • 打赏
  • 举报
回复
hiboys 2009-04-11
用最简单的继承就行了。
supperclass中定义此方法。
多个subclass都可以继承supperclass从而“免费”使用此方法了。
c++有多继承。不影响你的子类继承其他父类。java的话用接口更合适些。
接口是实现AOP的简单方案
  • 打赏
  • 举报
回复
发帖
模式及实现

5525

社区成员

C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
帖子事件
创建了帖子
2009-04-11 10:42
社区公告
暂无公告