第三章 OO之美

  今天是周六, 本来说来加班的,但是经理还没有到,所以趁着这点时间,看看书吧。时间,能抓住一点,绝不放过一点。希望在不久的将来,我的技术水平能有一个大的进步,寻求进步是我的最希望得到的快乐。你,还在等什么?

  这一章,看了目录,应该不是一些基础知识了,挑起了设计与架构的问题。我本人对这样的话题还是比较感兴趣的。

笔记

  1、对于设计来说,或许永远没有唯一的答案,你只能无限的接近最好。

  2、设计原则是设计的灵魂,而设计模式是系统开发的模板。这些面向对象的思想和应用来自于实践,完善于重构。

  3、在设计的广义概念里,几个必需的概念需要了解:面型对象,面向服务(WCF),框架(基础架构),设计原则(五大原则),设计模式(23个,可以挑重点学习,深入掌握--Abstract Factory,Iterator,Singleton,Adapter,Decorator,Observer,Facade,Template,Command),模式之外(除了基本的23种,还有一些其他的模式)

  4、再设计领域,你不必为看似高深的框架吓到,也不必为没有经验而怯场,在编程生涯中,你随时都可以成为一个架构者,关键是,你该随时让自己保持一个不懈怠的心,如何将所谓的MVC或者模式还有原则优雅而高效的应用到软件系统中,是一种功力和经验的经验的体现。但是凡事都要有基础,有了基本功之后再看着唱本骑驴走远吧。

  5、耦合的产生:·继承  ·聚合  ·接口  ·方法调用和引用  ·服务调用

  6、设计的目标:高内聚,低耦合;面向抽象编程;封装变化;实现重用:代码重用,算法重用

  7、手段和思想:封装变化,面向接口、抽象、服务编程

  8、就原理而言,依赖倒置要求设计:少继承多聚合,单项依赖,封装抽象,对依赖对象都应该终止于抽象类和接口。

  9、Bob大叔的三点总结:(实际编程中很难完全达到)

    (1)任何变量都不应该有一个指向具体类的指针或者引用。

    (2)任何类都不应该从具体类继承。

    (3)任何方法都应该覆写它的任何基类中已经实现的方法。

  10、解构控制反转(IoC):代码的控制器交由系统控制,而不是代码内部,主要体现在框架设计上。

  11、依赖注入(DI):客户类依赖于服务类的接口,并在运行时根据上下文环境,由其他组件实例化具体的服务类实例。从而实现客户类和服务类的松散耦合。

  12、三种注入方式:

    (1)接口注入:将对象的关系转移到一个接口,以接口注入控制(可以通过配置文件进行实例化,甚至都不需要编译)

    (2)构造器注入:通过构造函数实例化抽象接口。

    (3)属性注入:通过属性实例化抽象接口。

    (4)其他:通过特性Attribute(待以后专门讲Attribute的时候学习)。

  13、现有依赖注入框架:Unity、ObjectBuilder、Castle、Spring.net。

  14、纵观模式:

  

  

  15、为了解决new方式创建对象的依赖违反问题,典型的解决思路是将创建的依赖由具体转移为抽象,通常情况下有两种方式来应对:工厂模式和依赖注入。

  

  16、面向对象和基于对象:C#,C++这样的语言是面向对象的语言,然而JavaScript这样的语言有对象的概念,但是没有继承多态这样的结构,所以只能称得上是基于对象的语言。但确实也使得JavaScript有了很大的灵活性,而且轻量级,这就是适当的好处。

  17、.net闭包:初识闭包,应该是在离散数学的课堂上,它源自数据概念。而在语言系统上,主要指函数和与函数相关的上下文环境组合而成的实体。

  

  

  

  18、函数和闭包的概念不同:闭包是函数和其上下文环境组合而成的实体,不同的引用环境和相同的函数可以组合成不同的闭包实例;函数则不会因为上下文环境而改变,因为其实一个可执行的代码体。

  19、闭包的应用:

  

  

  闭包引起的“错误”:

  

  输出:666666

  原因:因为闭包的存在,所以大家共享了一个i的值,即为6。这就是闭包引起的,但是这不是它不好的地方,只不过是使用者对其不了解罢了,所以说,要想使用闭包,必须要透彻的理解它,这样才不会弄巧成拙。拿着这把双刃剑尽情杀敌吧、、、

  20、好代码和坏代码:命名,编码规范,命名规则,多注释,用命名空间组织你的代码,切勿模式而模式,线程安全很重要,不断的重构和思考,扩展无处不在,性能,测试,

posted @ 2014-12-20 16:50  H:JL  阅读(89)  评论(0编辑  收藏  举报