当前位置:编程学习 > C#/ASP.NET >>

这个基类应该怎样定义




这是“系统管理子系统”,该系统中的类是根据用例图抽象出来的,都是“用例对象”,对象中有其对应的方法。“用例对象”有些公共方法,如“增删改查”,然后抽象出了基类“CCUtility”。
问题是:“把公共的代码抽取出来,减少代码的重复性”,这样基类才能起到作用。公共的方法来实现“增、删、改、查”应该怎么办???说说思路。有实例就更好了。。。

一、类和方法说明:
1、CCUtility(公共操作类,其它管理类的基类)
  Check():查看操作。 Add():添加操作。Modify():修改操作。Delete():删除操作。
2、SystemUersManage(系统用户管理类)
  setPower():设置权限类。(继承自CCUtility的方法不在赘述)
3、ExpertManage(专家用户管理类)
4、SortManage(资料类别管理类)
  getChild():获取子类。 containsChild()是否包含子类。containsContent():是否包含资料。addChild():添加子类。
5、ProfessionalSortManage(煤矿专业分类管理类)
  containsContent():是否包含资料判断。
6、EnteringsAndLabelsManage(录入资料、标注管理类)
  showInfo():显示资料详细信息。setEnteringspass():设置录入资料通过。setLablespass():设置标注通过。statisticsEnterings():统计通过数量。statisticsLabels():统计标注数量。modifyEnterings():修改录

入资料。deleteEnterings():删除录入资料。modifyLables():修改标注。
  deleteLables():删除标注。
7、ShowingsManage(发布资料管理类)
  showInfo():查看资料明细。
  setState():设置资料装填。
8、BadWordsManage(过滤字管理类)

弟发了不少帖子了已经,近期就会吧所有的帖子都结了。您会发现帖子的分数都比较高,但是结的不及时。因为总是遇到新问题。不过各位大侠放心,小弟的帖子都会接,而且分数可观哦。。。
这也许是感谢各位对小弟帮助的最好的方式了。
--------------------编程问答-------------------- --------------------编程问答-------------------- 基类是不是只定义,不写具体实现 --------------------编程问答--------------------
引用 2 楼 highpr 的回复:
基类是不是只定义,不写具体实现


当然要写实现了。 --------------------编程问答-------------------- 友情帮顶。 --------------------编程问答-------------------- 设计不是给一个空洞的动词,如果给你个空洞的动词就严重脱离了实际。比如说Add(),向哪里Add?如果这个目标对象不需要定义,而是可以可以胡乱实现,那么你还真正能够实现Add吗?如果你的CCUtility另外关联一个数据库对象,那么你内存中的每个对象都要背上数据库这个负债吗?

你可以看看Linq to SQL或者Linq to EF之类的,数据库(数据库连接)跟对象没有直接的关系。数据库就是一个工具,是工具,而不是父类,所以没有去给每一个内存对象盲目增加父类负债。

一个进行“增删改查”的数据连接可能是这样的:
public interface IMyDbTransaction : IDisposable
{
    void Insert<T>(T obj) where T : class;
    void Delete<T>(T obj) where T : class;
    void Update<T>(T obj) where T : class;
    void Commit();
    T Query<T>(long id) where T : class;
    IQueryable<T> Query<T>() where T : class;
}

这就是工具,它是处理对象的额外工具,而不是作为对象的父类。 --------------------编程问答-------------------- 至于你举的“这个管理类、那个管理类”的,我想在你刚开始特别热衷于继承时可能会觉得不错,但是实际上真正使用就会很快变成烦恼。对象分类不是什么树状的,生活中的对象,其类型以及类型的继承是作为一种离散的方式而存在的。

比如我们知道企鹅、鸵鸟、麻雀都是禽鸟。可是换一种视角,企鹅是南极动物,麻雀是会飞的动物,鸵鸟是沙漠动物,你是要想让南极动物全都归类于禽鸟,还是想让全都是南极动物?而对于鸭嘴兽你是把它单独归入禽鸟类还是单独归入哺乳动物类?显然不要总想着用一个树来搞分类。事务的分类继承关系是一个图,既一个类会有多重父类,只不过java和.net不支持多重继承,而不得不用interface来代替罢了。

另外当编程时,当然是类型越少越好。定义很多类并不是证明你的软件设计就很高级。定义多少类,需要看你的设计变化程度,你是因为切实需要才不得不增加一些分类抽象定义,但是让然要尽量保证你的系统的概念简单易懂,而不是搞学术化地什么分类研究。 --------------------编程问答-------------------- 事务的分类继承关系是一个图,既一个类会有多重父类  -->  对象的分类继承关系是一个图,既一个类会有多重父类 --------------------编程问答--------------------
引用 7 楼 sp1234 的回复:
事务的分类继承关系是一个图,既一个类会有多重父类  -->  对象的分类继承关系是一个图,既一个类会有多重父类


挺有道理的。 --------------------编程问答-------------------- 学习一下,正需要这方面的东西。 --------------------编程问答-------------------- bangdingle --------------------编程问答-------------------- 已经说过了
不要为了抽象而抽象 --------------------编程问答-------------------- 你可以这样,把所以的你认为重复的方法都提出来写入基类
并且把表名要提出来,不能依赖表,要随便传什么表都行
如部分截图:

再让子类都继承它,如部分截图:
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,