社区
模式及实现
帖子详情
有关业务划分与基类的问题
lw1a2
2008-03-10 09:18:16
有两个业务类A和B,它们之间在业务上是没有关系的。
但是它们在业务流程上是近似的:比如,第一步校验数据,第二步文件操作,第三步写数据库。
于是这两个就存在相同的代码。
现在有两个方法来设计这两个类:
1)A和B从同一个基类派生,基类封装公共的代码,A和B分别实现自己特有的代码
缺点是这个基类不伦不类,不符合IS-A的标准
2)A和B分别独立
缺点是存在冗余代码,维护起来不方便
请问,这种问题一般的处理原则和方法是什么
...全文
120
10
打赏
收藏
有关业务划分与基类的问题
有两个业务类A和B,它们之间在业务上是没有关系的。 但是它们在业务流程上是近似的:比如,第一步校验数据,第二步文件操作,第三步写数据库。 于是这两个就存在相同的代码。 现在有两个方法来设计这两个类: 1)A和B从同一个基类派生,基类封装公共的代码,A和B分别实现自己特有的代码 缺点是这个基类不伦不类,不符合IS-A的标准 2)A和B分别独立 缺点是存在冗余代码,维护起来不方便 请问,这种问题一般的处理原则和方法是什么
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
abupie
2008-03-11
打赏
举报
回复
首先“任何情况都不能用继承”,这种思想是错的,否则,面向对象也没有必要实现继承了。
只是说IsA和HasA在都能实现的时候,选择HasA比IsA要好。
就楼主的这个情况,其实就是设计模式中的“模板模式”,用继承封装相同的流程,其实是比较好的方法。请参阅设计模式的相关章节。
lw1a2
2008-03-11
打赏
举报
回复
现在是这样,我们项目组负责实现A、B这两个模块(分别是两个DLL)
如果将公共的部分提出来,单独放在一个DLL里(里面除了公共基类还有一些宏什么的)不知道改怎么命名
不能叫的太大(例如XXXCommon),因为只有两个模块用
而且,要考虑到将来用户会单独安装A或者B模块的需求
babyvox1999
2008-03-11
打赏
举报
回复
顶
葫芦鬼
2008-03-11
打赏
举报
回复
将相同操作的部分进行封装成C。
A/B与C是has-A的关系。
赞同3楼观点。
yqw945
2008-03-10
打赏
举报
回复
我以前遇到过一个类似的例子
A,B,c...多种表单他们要实现的操作流程都大体相同,数据结构不同。
当时我们的做法是采用第二种方法分别独立定义表单类。
按照软件工程的思想第一种方法有内容耦合的嫌疑,这就是说C类的对象完全可以不通过正常接口进入A类,这是不符合现实逻辑的
huang_yu_qiang
2008-03-10
打赏
举报
回复
赞同用方法一,因为:
1. 维护工作量占软件生命期的70%以上。
2. "IS A"关系有时候是不明显的,流程一致也是一种"IS A"关系啊,就看你怎么理解了。
lw1a2
2008-03-10
打赏
举报
回复
模板基本上不太可能
使用第一种方法的话,岂不是把两个逻辑上无关的类耦合起来了?
珍惜生命远离CPP
2008-03-10
打赏
举报
回复
我赞同第一种.
要么用class封装好功能.
A和B都有这个class成员
独孤过儿
2008-03-10
打赏
举报
回复
要是我,我就选择第一种方法!但是要高度的抽象出A和B的共同特征,这样的基类才是一个设计良好的基类
星羽
2008-03-10
打赏
举报
回复
是否可以考虑用模板??
相似代码占的百分比?
android 项目框架
基类
(eclipse)
一个可以复用项目模板框架,搭建了一个项目框架,编写了一些最基础的、项目常用的一些代码包括activity
基类
,adapter
基类
Kotlin独立快速搭建小型项目通用模板,已构建完Base
基类
、分好目录
Kotlin独立快速搭建小型项目通用模板,已构建完Base
基类
、分好目录
Android之MVP(二)深入封装之登录Demo(MVP抽取
基类
)
Android之MVP(二)深入封装之登录Demo(MVP抽取
基类
)
Android代码-Android-Architecture
Android Architecture 概述 该项目结合 MVP 与 Clean 架构思想,探索在 Android 项目上的最佳实践。 遵循 Clean Architecture 的原则。 数据层(Data Layer):加入数据转换层(Mapper)将服务端数据模型(Entity)与本地数据模型(Model)解耦。
业务
层(Domain Layer):按模块
划分
业务
,具体
业务
交给 Usecase 处理。 显示层(View Layer): Presenter 不再与 Activity/Fragment 一一对应,Presenter 按照
业务
模块
划分
功能,大大提高 Presenter 的复用性。Activity/Fragment 中可以实现多个 View,持有多个 Presenter 来完成
业务
逻辑。 示例 分支 描述 master 演示了 Model-View-Presenter(MVP) Clean 架构,提供一些
基类
,状态栏沉浸适配等 develop 使用 butterknife develop-dagger 加入 dagger 的支持 deve
继承窗体的设计
C#实现窗体的继承,大项目设计时可以参考
模式及实现
5,530
社区成员
4,167
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章