关闭

面向对象和设计模式

877人阅读 评论(0) 收藏 举报

概要

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

       关键词 设计模式,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.      设计模式与多态

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

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:402866次
    • 积分:4667
    • 等级:
    • 排名:第6253名
    • 原创:131篇
    • 转载:43篇
    • 译文:8篇
    • 评论:29条
    文章分类
    最新评论