《必须知道的.net》读后感 转

《你必须知道的.net》读书笔记 008——2.4 依赖倒置



依赖倒置

核心思想:依赖于抽象

体现在:
1、高层模块不应该依赖于底层模块,二者都应该依赖与抽象。
2、抽象不应该依赖于具体,具体应该依赖于抽象。


==

     依赖倒置,是最郁闷的一个名词,理解起来也是很难的,至少对于我来说是这样的。一开始的理解是,依赖倒置,依赖什么?倒置。倒置是什么东东,怎么依赖呢?后来才知道,这是一倒装句,倒置依赖,就是颠倒依赖关系。为什么不直接叫做颠倒依赖呢,要不叫依赖于抽象也行呀。是谁翻译的呀?弄出来这么个难懂的词。

     好了继续,颠倒依赖关系,那么原来的依赖关系是什么样的呢?不知道,对于初学者来说,应该没有什么依赖的概念吧,至少我是这样的。其实不用管它什么颠倒不颠倒的,直接记住结论就可以了。直接依赖抽象就可以了,如果您一直都是依赖于抽象的话,那么也就没有什么颠倒不颠倒的说法了。

     还是说电脑硬件,现在主流的内存接口是DDR2阅读全文>

发表于 @ 2008年07月27日 17:25:00 | 评论( 0 ) | 编辑| 举报| 收藏

原创 《你必须知道的.net》读书笔记 007——2.3 开放封闭原则



     开放封闭原则,核心思想:软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。

     体现在两个方面:
     1、对扩展开放,意味着有新的需求和变化时,可以对现有代码进行扩展,以适应新的情况。
     2、对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

==

     辛辛苦苦写好的代码,测试也通过了,就不要再改了嘛,一改动就可能发生错误,或者是不希望的修改,至少还需要在测试一遍吧。如果改一处会引发好多的错误的话,那就更不要改了。不对,好像后面就错了。如果是牵一发而动全身的话,那么还是早点重构一下的好,当然是在允许的情况下。
     那么对于写好了的代码要增加功能怎么办呢?扩展呀,再加一个新的类去实现新的功能,而不要改动原有的代码。不过说起来容易做起来难,到底要怎么实现呢?举分页控件的例子吧,一开始分页方式是采用PostBack,但是在网页里面使用的时候,发现对于阅读全文>

发表于 @ 2008年07月27日 16:25:00 | 评论( 0 ) | 编辑| 举报| 收藏

2008年07月24日

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



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

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

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

     树上举的例子是一个添加数据的例子,反面教材是把权限判断和功能实现放在了一起,正面教材是使用一个接口把功能实现抽象出来,阅读全文>

发表于 @ 2008年07月24日 07:26:00 | 评论( 0 ) | 编辑| 举报| 收藏

2008年07月23日

原创 《你必须知道的.net》读书笔记 005——1.5 玩转接口



     接口,理解这个东东用了好长的时间,从 2004年开始,写分页控件的时候需要实现一个接口,在网上找了一个例子,照猫画虎般的弄出来了,居然能用,但是完全没有理解何为接口。有好几年的时间过去了,直到最近才算是真正的理解了一点接口。


 (原来书里面的后面还有专门的讨论,这里就先不说了,感谢zqwuwei  的提问)

     接口的一个很明显的例子就是——主板,电脑里的主板。

     主板上有很多的插槽(接口),可以插很多的配件,比如CPU、内存、显卡、硬盘、光驱等。各种配件可以灵活的更换,其原因就是遵循了相同的协议(规则)。比如内存是DDR2的,显卡是PCI-E的,硬盘是串口的。

     怎么到写的时候,就不会了呢。想得挺好,可惜写出来就很枯燥了。哎,慢慢提高吧。



     ps:发现我挺爱挑毛病的,p52页,1.5.5 接口之原则。
第二条是:接口支持多继阅读全文>

发表于 @ 2008年07月23日 19:26:00 | 评论( 0 ) | 编辑| 举报| 收藏

2008年07月18日

原创 《你必须知道的.net》读书笔记 004 —— 1.4 多态的艺术





作者用了很大的篇幅讲解了一个程序,就是一个伪代码形式的,根据文件的扩展名打开文件的程序。比如要打开.doc的文件,那么就执行 OpenDocFile()函数。其他类型的文件也是类似的方法,一种扩展名对应一个函数。调用的时候就是用Case来判断扩展名,然后调用对应的函数。
然后呢提出了这种实现方法的一些缺点,这里就不描述了。我觉得最重要的两个缺点是扁平化和case的方式调用。
扁平化,OpenDocFile()这样的函数都是同一个层次的,没有所属关系,现在电脑里的扩展名也实在是太多了,几百个函数堆砌在一起,实在是难以维护。
case调用,看起来挺简单的,也很容易理解,但是扩展名多了就是噩梦了,真的达到了几百个的话,那带码得写多长呀?

作者下面的讲解就是围绕这两个部分来进行的(我感觉的)。首先定一个IFileOpen的接口(不明白为什么要定义这个,这一节讲的是多态呀),接口里面定义一个OpenFile()函数。然后定义一个抽象基类,Files:IFileOpen 。然后又定义阅读全文>

发表于 @ 2008年07月18日 21:26:00 | 评论( 0 ) | 编辑| 举报| 收藏

2008年07月16日

原创 《你必须知道的.net》读书笔记 003 —— 1.3 封装的秘密


    好了继续,封装是一个简单的、基础的,没什么好说的,但是又说不明白的东东。没有源码就是封装起来了,有了源码就不是封装了,因为可以打开来随意修改了。呵呵,开个玩笑先。

    字段、属性。

    原来对于属性的看法是,如果要用属性而不用public的字段的话,需要两个条件:一是写自定义控件,目的是在属性窗口里可以查看属性,直接赋值;一是在属性里面做判断,比如age属性的set{}里面,可以判断一下,在 0到150才是有效地,超出了就视为无效。如果既不做判断,又不是自定义控件的属性的话,那么是不是可以直接使用public的字段呢?

    我觉得是可以的。呵呵。

    我觉得类的最大的功劳是对函数的管理,其实属性也是一种函数,接口也是函数,类就是把相关的函数集中在一起,以便于“减少”关注的数量。比如指挥官指挥作战的时候,关注的是有几个军,几个师,而不是每一个士兵。

    封装要保证:

    1、阅读全文>

发表于 @ 2008年07月16日 21:26:00 | 评论( 0 ) | 编辑| 举报| 收藏

2008年07月14日

原创 《你必须知道的.net》读书笔记 002——1.2 什么是继承


    1.2 什么是继承
    “对于继承,就应该着手从这些容易误解与引起争论的话题来寻找关于全面认识和了解继承的答案。一点一滴摆出来,最后在对分析的要点做归纳,形成一种系统化认识。这就是一种探索问题的方式,用于剖析继承这一话题真是在恰当不过了。”

    高手就是高手,可以通过争论的话题,来寻找到答案,而我只能靠在长时间的工作中,尝试着写几段代码,来慢慢体会。

    “继承机制体现了面向对象技术中的复用性、扩展性和安全性。为面向对象软件开发与模块话软件架构提供了最基础的技术基础。”

    按照实现方式的不同分为两类:实现继承、接口继承(接口实现)。

    1、继承是可传递的,子类是对父类的扩展,必须继承父类方法,同时可以添加新方法。
    2、子类可以调用父类的方法和字段,而父类不能调用子类方法和字段。
    3、虚方法覆写的操作,使得父类指针可以指向子类对象成员。

阅读全文>

发表于 @ 2008年07月14日 21:26:00 | 评论( 0 ) | 编辑| 举报| 收藏

原创 《你必须知道的.net》读书笔记 001——1.1 对象的旅行



    好久没看书了,上次看书的时候还是一年前了,一个偶然的机会,比较系统的看了一下OO的基础,封装、继承、多态等,当时真的是很不会,看了也是一知半解,迷迷糊糊的。在实际中的项目里也没敢一下子应用OO,还是用自己比较拿手的面向过程来应对项目,然后一点一点使用OO的技巧来代替一部分的代码(或者叫做功能)。

    应为是使用C#来编写程序,所以多了解一下OO的特点和技巧,对写程序是有很大的帮助的。anytao写的这本书,感觉可以解决一些我心里的一些迷惑的地方吧。

    读了不能白读,写点读后感吧,一是记录一下书里面的知识点,好像上课的时候的笔记,另一个就是写点自己的感想,怪不得上了年纪的人就喜欢唠叨。

    重头开始。

    第一部分 渊源 .NET与面向对象 

     “在.net世界里,一切都是对象。面向对象思想的掌握是深入理解.net技术的必修课,.net Framework的高楼大厦中,是什么支撑着各个复杂度的系统相阅读全文>

原文地址:https://www.cnblogs.com/csj007523/p/1673541.html