设计模式--大纲

来源:互联网 发布:陈华编程学院 编辑:程序博客网 时间:2024/05/16 05:09

1.设计模式中类与类之间的6种关系

在面向对象的设计模式中,类与类之间主要有6种关系:依赖、关联、聚合、组合、继承、实现

依赖:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。则称类A依赖类B。

关联:类A当中使用了类B,其中类B是作为类A的成员变量。则称类A关联类B。

聚合:聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

组合: 相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。

继承:继承表示类与类(或者接口与接口)之间的父子关系。

实现:表示一个类实现一个或多个接口的方法。

尤其注意区别依赖、关联、聚合、组合几种类间关系的联系与区别。一句话总结便是:依赖、关联、聚合、组合四种类间耦合度依次增强。

2.设计模式中的6大原则

在运用面向对象的思想进行软件设计时,需要遵循的六大原则:

1)单一职责原则(Single Responsibility Principle)
2) 里氏替换原则(Liskov Substitution Principle)
3) 依赖倒置原则(Dependence Inversion Principle)
4)接口隔离原则(Interface Segregation Principle)
5) 迪米特法则(Law Of Demeter)
6) 开闭原则(Open Close Principle)

单一职责原则

说白了,就是一个类只负责一项职责。

里氏替换原则

子类可以扩展父类的功能,但不能改变父类原有的功能。主要包含以下4层含义:

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
  • 子类中可以增加自己特有的方法。
  • 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  • 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

依赖倒置原则

A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。

B.抽象不应该依赖于具体,具体应该依赖于抽象。

接口隔离原则

简而言之就是不要建立臃肿的接口,接口中的方法应尽量少,一个类对另一个类的依赖应该建立在最小的接口上,以避免客户依赖(实现)不必要的接口。

迪米特法则:

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。简而言之:只与直接的朋友通信。

开闭原则:

简而言之就是:对扩展开发,对修改关闭。

6大原则总结:单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭,用抽象构建框架,用实现扩展细节。

3. 设计模式分类

总体来说设计模式分为三大类:

创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。设计模式之间的关系图如下:


文章转自:http://www.cricode.com/3532.html

关于:设计模式中类的关系,会在之后详细讲解


0 0
原创粉丝点击