社区
模式及实现
帖子详情
有关业务划分与基类的问题
lw1a2
2008-03-10 09:18:16
有两个业务类A和B,它们之间在业务上是没有关系的。
但是它们在业务流程上是近似的:比如,第一步校验数据,第二步文件操作,第三步写数据库。
于是这两个就存在相同的代码。
现在有两个方法来设计这两个类:
1)A和B从同一个基类派生,基类封装公共的代码,A和B分别实现自己特有的代码
缺点是这个基类不伦不类,不符合IS-A的标准
2)A和B分别独立
缺点是存在冗余代码,维护起来不方便
请问,这种问题一般的处理原则和方法是什么
...全文
152
10
打赏
收藏
有关业务划分与基类的问题
有两个业务类A和B,它们之间在业务上是没有关系的。 但是它们在业务流程上是近似的:比如,第一步校验数据,第二步文件操作,第三步写数据库。 于是这两个就存在相同的代码。 现在有两个方法来设计这两个类: 1)A和B从同一个基类派生,基类封装公共的代码,A和B分别实现自己特有的代码 缺点是这个基类不伦不类,不符合IS-A的标准 2)A和B分别独立 缺点是存在冗余代码,维护起来不方便 请问,这种问题一般的处理原则和方法是什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
是否可以考虑用模板??
相似代码占的百分比?
Java代码乱象!
本文剖析了创业公司Java微服务架构中的常见
问题
,如不合理使用
基类
、
业务
代码位置不当、混合
业务
与持久层代码,以及不当暴露数据库模型。提出了解决方案,包括重构
基类
、遵循三层架构、合理
划分
职责,以及采用科学项目搭建方式。
如何
划分
子系统与分析
业务
接口?
本文讲解了系统分解中子系统
划分
的方法,包括按
业务
职能和产品服务分解,并介绍了
业务
接口分析的重要性,明确了接口的用途与价值及接口交互过程。
VLAN
划分
到底按部门还是按
业务
啊?错一步就难管控
本文探讨VLAN
划分
按部门还是
业务
。按部门
划分
易理解、配置简单,但跨部门协作难、安全策略难统一;按
业务
划分
安全性强、
业务
迁移灵活、方便部署策略。实际部署有混合思路,还介绍适合按部门
划分
的场景,提醒别划太多VLAN,并给出选择
划分
方式的判断方法和推荐组合模型。
复杂度控制——
划分
业务
领域与主体,面向主体编程
本文提出一种面向
业务
主体的垂直切片架构,适用于Spring Boot单体应用。核心是按
业务
主体(如用户、部门)聚合代码,取代传统分层或纯DDD实践;强调物理包结构按主体
划分
、Service层保留失血模型、Persistence层封装ORM细节、跨主体单向依赖防循环。方案兼顾开发效率与可维护性,支持平滑演进至微服务。
「数仓建设篇」数仓主题域
划分
本文探讨了数据仓库建设中的主题域
划分
策略,通过
业务
案例剖析了如何根据
业务
系统、部门或流程
划分
主题,强调了主题域稳定性和扩展性。作者分享了搬家
业务
的实践,以及主题域与数据域、
业务
过程的关系,并提供了业界马蜂窝的实例。
模式及实现
5,529
社区成员
4,167
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章