【自然框架】 页面里的父类—— (补充)

      没想到下午发的《【自然框架】 页面里的父类——把共用的东东都交给父类,让子类专注于其他。 》启发了热烈讨论,还以为又是一大堆的口水回复呢。看到大家的热烈讨论我很高兴,这才是我希望的讨论环境,无论是支持的还是反对的,我都非常感谢。对我的帮助是很大的,让我知道了哪些是大家可以接受的,哪些是不对的。比闭门造车,一个人写代码好多了。我觉得博客园是一片净土,感谢dudu为我们提供了一个讨论的环境!谢谢dudu,谢谢大家的帮忙!

      写完了才发现,忘记写需求了,就是为什么要这么设计的原因。在这里补上。

      自然框架里的页面分为几类:登录页面、不用验证权限的页面(但是要登录)、数据列表页面、表单页面、删除页面、其他页面(比如统计报表等)。
      
      1、登录页面,还没有登录呢,当然是不能判断是不是登录了,只需要实现验证用户名、密码是否匹配,当然了,并不是一定要他自己实现,也可以调用其他的类来实现。

      2、不用验证权限的页面,比如树状功能菜单,上面的放软件名称的那个页面。恩,我是采用frame的方式的,所有有这两个页面。这两个页面是即不需要判断登录用户是否有权限访问,也没有URL参数。但是要确保登录后才能访问。

      3、数据列表页面,必须登录,必须验证是否有权限访问。URL参数有FunctionID(功能节点ID)。也可能会传递DataID(作为外键处理),DepartmentID(部门ID)。同一类页面的控件的属性赋值也有相同的地方。

      4、表单页面,必须登录,必须验证是否有权限访问,还要验证登录人是否可以访问DataID代表的记录。URL参数有FunctionID(功能节点ID),ButtonID(功能按钮ID),DataID(记录ID),有时候会传递ForeignID(外键ID),DepartmentID(部门ID)。同一类页面的控件的属性赋值也有相同的地方。

      5、删除数据的页面,必须登录,必须验证是否有权限访问,还要验证登录人是否可以访问DataID代表的记录。URL参数有FunctionID(功能节点ID),DataID(记录ID)。

      有些功能是多个页面共有的、相同的,有些是一类页面有的,那么大家会怎么设计呢?我的设计方案就是上一篇说的,

BasePage 对应 登录页面,
PagePermission 对应 不用验证权限的页面,这里验证是否登录,除了登录页面都是需要的。
PageURL 定义参数,并且进行验证,

BasePageList 对应 数据列表页面,处理列表专有的需求。
BasePageForm 对应 表单页面,处理表单专有的需求。
BasePageDelete 对应删除数据的页面,处理删除数据专有的需求。

看了回复后的思考:
1、看了大家的回复,我也觉得把权限验证的函数放在PagePermission不太适合,所以我想把它放在另一个地方——UserInfo,就是记录登录人信息的一个类。

2、另外对于“组合”,我还是比较迷糊,一开始以为是组合模式,下班后看了看书,感觉又不是。那么大家说的组合又是什么呢?学习面向对象的时间不是太长,这方面还是很欠缺的。

3、继承的层数,这个好办,登录页面就是一个页,可以直接继承System.Web.UI.Page ,这样就少了一层。树状功能节点页面,这类的也就三个,也可以直接继承System.Web.UI.Page,这样继承的层数不就少了吗。或者给这三个页面单独做一个父类。

不过有必要为了减少继承的层数而特意这么做吗?或者说,在继承的时候,我们还要数一数,不能超过3。

问:为什么要这么做?答:因为书上说......
这个也太死板了吧。呵呵。

4、组合优于继承,那么是不是说继承就没有用了,都用组合吧。不是这样的吧。我觉得继承的一个优点就是可以“被动”执行,就是说不用在子类里面现象的调用函数,而是由父类默默的去做了。当然这么做也有个缺点,那就是如果不看看父类的代码(或者看说明文档)的话,那么就不知道父类到底做了什么。

欢迎大家继续拍板砖,呵呵,这样的讨论氛围我还是很喜欢的。大家觉得呢?

      
ps:不是道大家是不是有空?如果有空的话,是不是可以根据这个需求来设计一下呢?

==========================
= 希望我的想法,能够给您带来一点帮助! =
= 大家一起研究、讨论,共同提高、发财! =
==========================

时间: 2024-07-30 11:20:32

【自然框架】 页面里的父类—— (补充)的相关文章

【自然框架】 页面里的父类—— 改进和想法、解释

  1. 从Control到GridView继承了多少层? (这个图可不是现做的,这是以前为了写QuickPager分页控件而弄的.http://www.cnblogs.com/jyk/archive/2009/04/29/1446033.html )        看上面的类图,远远超过三层了吧.如果简单的用"书上说,继承不能超过三层"."组合优于继承"来衡量的话,那么.Net框架能得到什么样的结论呢?      所以我说,简单的依靠"书上说"

【自然框架】 页面里的父类——把共用的东东都交给父类,让子类专注于其他。

  [类图] [命名空间]------------------[文件截图]     可能您会问,不就是弄个父类吗,怎么又是这么复杂呢?这个嘛,听我慢慢道来. (类图里面Tree.Main1.DataDelete1.DataForm1.DataList1不是父类,而是共用页面)       这个是依据自然框架的特点来设置的,目的就是把共用的代码都放到父类里面,减轻子类的代码量.就是最大限度的避免冗余代码,就是说相同的代码只出现在一处!       如果只设置一个父类,不能满足不同的需求,所以就根据

页面里的父类——BaseUI源代码下载(2009.10.15更新)

    一.介绍和下载 名称: 页面里的基类(BaseUI) 版本: 1.0.2 上传时间: 2009.10.15 主要功能: 权限验证,URL参数获取.验证,自定义控件的赋值等. 下载: http://www.naturefw.com/down/List1.aspx  说明: 压缩包里面包含"页面里的基类(BaseUI)"和"当前登录人管理(UserManage)"两个项目的源代码.所以您下载了这个包就不需要在去下载"当前登录人管理(UserManage

【自然框架】——页面基类与设计模式(一)桥接模式(11.14补充了一段对桥接模式的理解)

  [自然框架] 页面里的父类-- (补充) [自然框架] 页面里的父类--把共用的东东都交给父类,让子类专注于其他.   ===================   以前发过两篇关于页面基类的文章,由于当时对于聚合.组合.桥接模式等不清楚,所以说的也是比较乱,这些日子又学习了一下程杰的<大话设计模式>,又有不少收获.现在我们再来重新分析一下.   先说需求:1. 对于MIS来说,大多数页面都需要验证一下访问者是否已经登录,是否有权限访问页面,是否有权限操作指定的记录. 2. 对于自然框架来说

借用 疯狂秀才 的页面,修改了一下自然框架后台管理的页面。

  不知道为什么,就是不喜欢extJS,昨天看到了疯狂秀才的页面,大家都说好,那我就借鉴一下吧.下载源码,加到aspx里面.运行,居然有js错误.一模一样的呀,怎么出错了?仔仔细细看了n遍,终于发现了不同的地方--多了一个表单<form > .去掉了就ok了.   然后就是修改菜单了.秀才的菜单是写死在页面里的js形式,我是喜欢动态加载的,于是用了一个古老的方法,在后台组合html,哦不对是js脚本了. 写代码,运行,调试,ok.   private void BindNode()      

【自然框架】——页面基类与设计模式(二) 模板模式

  前篇:[自然框架]--页面基类与设计模式(一)桥接模式   桥接模式的补充:(下面的一段是桥接模式里后补充的一段,桥接模式的一个小结)   什么是交接模式?引用<大话设计模式>里的定义: 桥接模式(Bridge):将抽象部分和他的实现部分分离,使他们都可以独立的变化.(P229)   不知道大家有没有看懂这个定义,至少我是没弄懂,呵呵.再引用一段<大话设计模式>的一段解释:(P232)   小菜:"我觉得交接模式所说的'将抽象部分和他的实现部分分离',还是不好理解,我

【自然框架】——思路、结构、特点的介绍(初稿,欢迎大家多提意见)

  开场白 面向过程:面向过程是"写代码",根据客户提出来的需求来写代码,包括函数.一步一步的写,都写完了,功能也就实现了. 面向对象:面向对象是"做设计",先不考虑细节,而是先做总体设计.都设计好了,再去实现细节. 举例来说,面向对象是设计一部汽车,而面向过程是设计一个流水线生产汽车.设计一部汽车是要考虑客户的需求,考虑众多因素,然后画图纸.并不考虑到底如何把汽车生产出来(至少不是重点).流水线的目的呢,就是要把汽车生产出来,至于汽车是如何设计的并不关心. 以前&

【自然框架】CMS之数据库设计

    在园子里也混了三年多,随笔200多,一开始只是想把自己的经验写一下,后来呢弄出来了一个"自然框架",主要精力就放在了介绍自然框架的思路上面了.随笔多了就发现一个问题:有点乱.虽然博客有分组,但是只支持一级分组,不支持n级的.博客里也没有"栏目"这一类的设置.所以对于随笔的管理有有点力不从心了.有些兄弟看到我的博客,看到我说自然框架,然后就会很迷茫,自然框架到底是什么?能做什么?如果想看看的话,从什么地方开始看,按照什么顺序来看?   博客的这种形式就不大好解

【自然框架】QuickPager分页控件,新增一种分页方式——伪URL分页(Postback版)

 适用场景 先说一下伪URL分页的适用场景.在网站的网页里实现查询功能,如果查询条件比较少的话,还比较好办,把查询条件放到URL里面传递即可.但是如果查询条件过多,就会照成URL的长度过长.既不好看,编写起来也很麻烦.如果查询条件是汉字的话,还有一个编码的问题.   Postback分页   再看看现有的几种分页方式.Postback分页方式可以利用ViewState来很方便的保存查询条件,但是由于采用表单提交的方式实现,搜索引擎不能识别.这个对于网站来说,是一个很难接受的.   URL分页 这