《你必须知道的.net》读书笔记 006——2.2 单一职责原则

 

     单一职责原则,核心思想:一个类最好只做一件事情,只有一个引起她变化的原因。

 

     就是分工合作的意思。一个人只做一种事情,比如设计师负责设计页面,做出来PS图,美工负责把PS图片,切成HTML代码的形式,加上css效果、flash动画等,程序员负责加代码。而程序员这里又可以细分一下,有的负责UI,有的负责业务逻辑,有的负责数据操作,对了还有架构师、技术经理、项目经理等。最后还要有专门负责测试的人员。

 

     其实上面有点扯淡的味道,往往小公司是做不到这些的。还是说程序吧,做到单一的最大的好处就是可以很灵活的组合。假设第一个步骤有两种选项,第二个步骤有三种选择,那么这两个组合起来就会有六种组合方式,可能就会达到六种不同的效果如果还有一个步骤,这个步骤有三种选择,那么合起来就有十八中组合方式了。而选项加起来只有八种。这就是用最少的代码,干最多的活吧。

 

     树上举的例子是一个添加数据的例子,反面教材是把权限判断和功能实现放在了一起,正面教材是使用一个接口把功能实现抽象出来,权限判断就只写一份,先做判断,然后利用接口来调用具体的添加、修改数据的操作。

 

     好像现在大家都是这么做数据操作的吗?我的和这个是很不一样的。呵呵。有空再说一下。

 

     单一原则,直接想到了我的分页控件——QuickPager。表面上看是严重的违反了这个原则,但是分页控件也不是由一个类组成的呀,细看一下内部的类,每一个功能都由一个(一组)专门的类来实现的,好像这么看就是符合了吧。

 

时间: 2024-08-03 12:36:21

《你必须知道的.net》读书笔记 006——2.2 单一职责原则的相关文章

[你必须知道的.Net]读书笔记--override与new在继承中的区别

前言:这本书拿到手已经好长时间了,但由于种种原因一直没读完,也许是我太懒了,应该好好反省自我检讨一下. 所谓"书读百遍,其义自见",虽然糊里糊涂做web开发六七年了,用.net也3年出头,但总觉得自己还是一个.net新手,很多东西只知道怎么用,但不知道为什么? 虽然老赵曾经讲过的一个观点我也很赞同,原话已经记不清了,大意是说:很多数学上的公理公式,只要前人(或自己)证明过是对的,以后再用时,谁会一次次的再重复去证明,直到证明结果弄对了再拿来用?但是有些问题还要是有比较深刻理解的,否则经

[你必须知道的.Net]读书笔记--浅clone与深clone

按照书上的代码,深克隆的示例代码编译没通过(可能是印刷时漏掉了某一行代码),所以重新修改了下,贴在这里以供阅读本书时跟我遇到一样问题的园友参考: 浅克隆示例:要点:克隆之后,新旧对象还是指向同一个引用,不管修改哪一个对象,都会影响另一个对象 namespace CloneTest{    class Program    {        static void Main(string[] args)        {                       Enrollment sourc

读书感受 - 软件设计师 - 你必须知道的.NET (C#类型存储方式分析)

      这几天花了些时间,相对仔细的阅读了<你必须知道的.NET>这本书,因为没有多少时间,请大家在看该书的时候一定要理解内容,转变成自己的经验.下面仅做简单的书评.         该书详细的介绍了C#类型的存储分配问题,对于值类型和引用类型的存储和类型的转换,都用了大篇幅来进行说明,如果还想再详细些,就得去看.net framework中的底层方法和机制了.其实它的这个存储分配,不该说是C#,应该是.net这个框架的存储分配方式.对于其它语言,比如VB.NET,VC++.NET也是一致

Canvas性能技巧:必须知道的Canvas性能技巧

文章简介:你还在抱怨自己写的canvas demo徘徊在10帧以下吗?你还在烦恼打开自己写的应用就听见CUP风扇转吗?你正在写一个javascript Canvas库吗?那么下面九点就是你必须知道的! 你还在抱怨自己写的canvas demo徘徊在10帧以下吗?你还在烦恼打开自己写的应用就听见CUP风扇转吗?你正在写一个javascript Canvas库吗?那么下面九点就是你必须知道的! 一.预渲染错误代码:       var canvas = document.getElementById

你必须知道的.NET

[你必须知道的.NET]第三十五回,判断dll是debug还是release,这 [你必须知道的.NET]第三十四回,object成员,不见了! [你必须知道的.NET]第三十一回,深入.NET 4.0之,从"新"展望 [你必须知道的.NET]第三十三回,深入.NET 4.0之,Lazy<T> [你必须知道的.NET]第三十二回,,深入.NET 4.0之,Tuple一二 [你必须知道的.NET]第三十回:.NET十年(下) [你必须知道的.NET]第二十九回:.NET十年(

[你必须知道的.NET]第二十七回:interface到底继承于object吗?

说在,开篇之前 在.NET世界里,我们常常听到的一句话莫过于"System.Object是一切类型的根,是所有类型的父类",以至于我在<你必须知道的.NET>8.1节 以"万物归宗:System.Object"这样的title为System.Object授予至高荣誉.所以,基于这样的观点就有了下面这句"接口是否也继承于System.Object?",事实上这正是今天在技术群里小小讨论的一个插曲. 1 缘起 在.NET世界里,我们常常听

[你必须知道的.NET]第二十四回:认识元数据和IL(上)

说在,开篇之前 很早就有说说Metadata(元数据)和IL(中间语言)的想法了,一直在这篇开始才算脚踏实地的对这两个阶级兄弟投去些细关怀,虽然来得没有<第一回:恩怨情仇:is和as>那么迅速,但是Metadata和IL却是绝对重量级的内容,值得我们在任何时间关注,本文就是开始. 1 引言 你可曾想到,我们的C#代码,编译之后究竟为何物?你可曾认知,我们的可执行程序,运行之时的轨迹究竟为哪般?那么,本文通过对Metadata(元数据)和IL(Intermediate Language, 中间语

[你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考

走钢丝的人,在刺激中体验快感.带着问题思考,在问题上迸发火花. 或者给问题以答案,或者给答案以问题,你可能永远无法看清全部,但是总能从一点突破很多.事实的关键就在于面对问题,我该如何思考? String Interning(字符串驻留)就是这样一个值得思考的话题,带着问题思考,我们至少要理清以下几个问题: 什么是string? 什么是字符串驻留? 字符串驻留的运行机制及执行过程? 字符串驻留的其他问题? 带着几个问号,你必须知道的.NET,继续更多体验. 1 带着问题? 带着问题思考,是技术探索

[你必须知道的.NET]第二十回:学习方法论

说在,开篇之前 本文,源自我回答刚毕业朋友关于.NET学习疑惑的回复邮件. 本文,其实早计划在<你必须知道的.NET>写作之初的后记部分,但是因为个中原因未能如愿,算是补上本书的遗憾之一. 本文,作为[<你必须知道的.NET>]系列的第20回,预示着这个系列将开始新的征程,算是[你必须知道的.NET]2.0的开始. 本文,作为一个非技术篇章,加塞儿到<你必须知道的.NET>队伍中,我想至少因为回答了以下几个必须知道的非技术问题:.NET应该学习什么? .NET应该如何学