一切皆是对象

    一门语言若是是另外一个语言的超集的话,那么这么语言就要向后者兼容,会变得臃肿,在某些方面的显得过于复杂,如c++c++

    2.引用是能够独立的存在的,当给一个引用进行初始化的时候,就是给这个引用添加了关联 如 string  a;和string a="as"闭包

    3.常量的使用一般都是放在程序的内部,但也可放在非rom存储器中(只读存储器)。组件化

   4.越是简单的事物,其可塑性就很强,能够在此基础上作出各类修饰;对于复杂的事物,确实相反,要改变所付出的代价很大,效果达不到预期。封闭性适合复杂,简单对应抽象。上层建筑依赖底层所存在,但要求要随着时间变化,作出不一样的响应,所肩负的职责愈来愈多。上层的建筑的职能都是依赖底层,要想其赋予不一样职责,故要改变底层,添加知足新的最小单位(只赋予一个职责)职能。故在上层和基础层之间映入抽象层,使上层依赖一个抽象层,在抽象层能够选择的添加新的最小单位,高层依赖抽象。设计

 6.五大原则:对象

单一职责原则SRP:Single Responsibility Principle继承

开放封闭原则OCP:Open-Close Principle接口

Liskov替换原则LSP:Liskov Substitution Principleip

依赖倒置原则DIP:Dependency Invertion Principleci

接口隔离原则ISP:Interface Separate Principle开发

 

  在面向对象设计中,如何经过很小的设计改变就能够应对设计需求的变化,这是令设计者极为关注的问题。为此很多OO先驱提出了不少有关面向对象的设计原则用于指导OO的设计和开发。下面是几条与类设计相关的设计原则。

 

1. 开闭原则(the Open Closed Principle OCP)

   一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。所以在进行面向对象设计时要尽可能考虑接口封装机制、抽象机制和多态技术。该原则一样适合 于非面向对象设计的方法,是软件工程设计方法的重要原则之一。咱们以收音机的例子为例,讲述面向对象的开闭原则。咱们收听节目时须要打开收音机电源,对准 电台频率和进行音量调节。可是对于不一样的收音机,实现这三个步骤的细节每每有所不一样。好比自动收缩电台的收音机和按钮式收缩在操做细节上并不相同。所以, 咱们不太可能针对每种不一样类型的收音机经过一个收音机类来实现(经过重载)这些不一样的操做方式。可是咱们能够定义一个收音机接口,提供开机、关机、增长频 率、下降频率、增长音量、下降音量六个抽象方法。不一样的收音机继承并实现这六个抽象方法。这样新增收音机类型不会影响其它原有的收音机类型,收音机类型扩 展极为方便。此外,已存在的收音机类型在修改其操做方法时也不会影响到其它类型的收音机。 

 

2. 替换原则 (the Liskov Substitution Principle LSP)

  子类应当能够替换父类并出如今父类可以出现的任何地方。这个原则是Liskov于1987年提出的设计原则。它一样能够从Bertrand Meyer 的DBC (Design by Contract) 的概念推出。

  咱们以学生为例,夜校生为学生的子类,所以在任何学生能够出现的地方,夜校生都可出现。这个例子有些牵强,一个可以反映这个原则的例子时圆和椭圆,圆是椭圆的一个特殊子类。所以任何出现椭圆的地方,圆都可以出现。但反过来就可能行不通。 

  运用替换原则时,咱们尽可能把类B设计为抽象类或者接口,让C类继承类B(接口B)并实现操做A和操做B,运行时,类C实例替换B,这样咱们便可进行新类的扩展(继承类B或接口B),同时无须对类A进行修改。

 

3. 依赖原则 (the Dependency Inversion Principle DIP)

  在进行业务设计时,与特定业务有关的依赖关系应该尽可能依赖接口和抽象类,而不是依赖于具体类。具体类只负责相关业务的实现,修改具体类不影响与特定业务有关的依赖关系。

  在结构化设计中,咱们能够看到底层的模块是对高层抽象模块的实现(高层抽象模块经过调用底层模块),这说明,抽象的模块要依赖具体实现相关的模块,底层模块的具体实现发生变更时将会严重影响高层抽象的模块,显然这是结构化方法的一个"硬伤"。

  面向对象方法的依赖关系恰好相反,具体实现类依赖于抽象类和接口。

  为此,咱们在进行业务设计时,应尽可能在接口或抽象类中定义业务方法的原型,并经过具体的实现类(子类)来实现该业务方法,业务方法内容的修改将不会影响到运行时业务方法的调用。 

 

4. 接口分离原则(the Interface Segregation Principle ISP)

    采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。

  ISP原则是另一个支持诸如COM等组件化的使能技术。缺乏ISP,组件、类的可用性和移植性将大打折扣。

  这个原则的本质至关简单。若是你拥有一个针对多个客户的类,为每个客户建立特定业务接口,而后使该客户类继承多个特定业务接口将比直接加载客户所需全部方法有效。

 

以 上四个原则是面向对象中经常用到的原则。此外,除上述四原则外,还有一些经常使用的经验诸如类结构层次以三到四层为宜、类的职责明确化(一个类对应一个具体职 责)等可供咱们在进行面向对象设计参考。但就上面的几个原则看来,咱们看到这些类在几何分布上呈现树型拓扑的关系,这是一种良好、开放式的线性关系、具备 较低的设计复杂度。通常说来,在软件设计中咱们应当尽可能避免出现带有闭包、循环的设计关系,它们反映的是较大的耦合度和设计复杂化。 

相关文章
相关标签/搜索