面向对象和设计模式

原创 2007年09月11日 19:05:00

概要

       面向对象的设计模式描述了面向对象设计过程中、特定场景下、类和相互通信的对象之间的常见的组织关系。面向对象的设计模式是面向对象方法论的演绎的结果,那么我们必然可以从多种模式中提炼出面向对象方法论的三个基点:封装、继承和多态。本文阐述了封装、继承、多态和设计模式之间的关系。

       关键词 设计模式,GOF,面向对象,封装,继承,多态

目录

1.          概述... 1

2.          什么是对象... 2

3.          设计模式与封装... 2

4.          设计模式与继承... 2

5.          设计模式与多态... 2

1.      概述

当我们讨论面向对象的时候,很自然的地就会想到面向对象方法论的三个基点:封装、继承和多态。面向对象的编程语言用一种特定的语言机制实现了这三个基点。但是至今也并没有一本“大百科”来陈述这种方法论,或许是因为面向对象是一种应用哲学,很难在实践之外用文字来陈述。如果是在特定的应用场景中呢?那应该是可以的。

我们通过单个的应用场景来描述面向对象方法论的话,显然是不够的。因为方法论的基点就是普遍性。所以我们需要找出一个普遍性的东西来描述面向对象的方法论。这种普遍性的东西就是模式。

每一个模式都描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案。设计模式是特定的上下文中的一类问题的解决方式。在面向对象的世界里,设计模式可以从应用的角度很好地陈述面向对象的方法论。因此,两者的结合也就是成就了面向对象的设计模式化。

面向对象的设计模式描述了面向对象设计过程中、特定场景下、类和相互通信的对象之间的常见的组织关系。常见的模式有GOF23种设计模式,可以参考《设计模式:可复用面向对象的基础》。

那么面向对象的设计模式是如何地反应面向对象的方法论的呢?

面向对象的设计模式是面向对象方法论的演绎的结果,那么我们必然可以从多种模式中提炼出面向对象方法论的三个基点:封装、继承和多态。

2.      什么是对象

         在不同的层面上理解,对象的定义各不相同:

1.         从概念层面上讲,对象是某种拥有责任的抽象

2.         从规格层面上讲,对象是一系列可以被其他对象使用的公共接口

3.         从语言实现层面上讲,对象封装了代码和数据

3.      设计模式与封装

面向对象方法论中提到封装的时候,并没有带宾语,那么这个封装的意义就是不完整,从另外一个角度来说它是抽象的。因此面向对象的封装的意义在特定的场景中才是有具体意义的。从众多的设计模式我们不难看出,大多数的模式陈述了一个主题就是“封装变化”。这些变化可以是:

1.         对象的行为。

Factory Method模式、Abstact Factory模式、Builder模式、Prototype模式、Observer模式、Visitor模式、Strategy模式等

2.         /对象的内部结构。

Iterator模式、Bridge模式等

3.         对象之间的交互。

4.         效率

Flyweight模式等。

因为设计模式的核心主题是“封装变化”,故我们可以说当我们需要封装变化的时候就可以考虑使用设计模式化。

4.      设计模式与继承

         面向对象中的继承可以是实现继承,也可以接口继承。实现继承耦合了两类对象之间的关系,在很多情况下会给造成程序的僵化、粘滞、脆弱等。因此我们需要接口继承,接口代表着抽象,而往往抽象的东西都是稳定的。使用接口继承不但可以解偶两类或多类对象之间的耦合关系,还可以让你的系统更稳定。所以很多设计模式阐述了一个主题就是,面向接口编程而不是实现编程。无论抽象的还是具体的类都应该依赖于抽象(接口),而不是实现。

Bridge模式、Composite模式、Strategy模式、Visitor模式等。

5.      设计模式与多态

         利用设计模式在封装对象的行为时,最具有实现价值的就是多态。在以封装对象行为为基本主题的模式中,多态的作用在于它让你更直接地表达行为变化的概念。因此多态的意义更多的在于实现。封装变化才是本质。

 

黑马程序员------毕老师视频笔记第六天------面向对象(单例设计模式)

java中有23中通用的设计模式 设计模式:解决某一类问题最行之有效的方法   单例设计模式:解决一个类在内存中只存在一个对象的问题   想要保证对象唯一: ①为了避免其他程序过多的建立该...

面向对象 - 高内聚低耦合(设计模式)

内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系; 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模...

JavaWeb技术之--面向对象设计模式

面向对象设计模式  常用的面向对象设计模式有4种: Factory模式、Singleton模式、Facade模式和MVC架构模式。  JSP设计模式  SUN公司推出JSP技术后,同时也推...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象和设计模式
举报原因:
原因补充:

(最多只允许输入30个字)