面向对象和设计模式

原创 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

>>>> 面向对象开发的几个核心思想 1、问题领域、对象、属性、状态、行为、方法、实现 问题领域:   指软件系统所模拟的真实世界中的系统,在现实生活中,比较常见的比如,税收、社保、银行、商...
  • ShareUs
  • ShareUs
  • 2016年03月21日 17:10
  • 2730

面向对象之设计模式

面向对象之设计模式前言 要想推开架构师的那扇大门,就离不开设计模式这把钥匙。对设计模式的理解与精通,是通往架构师之路的第一步 在任何面向对象语言的开发过程以及个人职业技能成长的道路中,新手与新手或者新...
  • u013263917
  • u013263917
  • 2016年11月22日 23:15
  • 749

设计模式必须通过面向对象来实现吗?

前些天发了一篇《如此理解面向对象编程》的文章,然后引起了大家的热议。然后我在微博上说了一句——“那23个经典的设计模式和OO半毛钱关系没有,只不过人家用OO来实现罢了……OO的设计模式思想和Unix的...
  • ghostyusheng
  • ghostyusheng
  • 2016年03月07日 11:18
  • 598

设计模式之面向对象七大基本原则

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!概述在运用面向对象的思想进行软件设计时,需要遵循的原则一共有7个,他...
  • yanbober
  • yanbober
  • 2015年04月27日 16:25
  • 6319

面向对象的设计模式(六),状态模式

我们是否在写程序的过程中有过在一个类中写了很多状态,是否需要根据该对象的不同状态决定该对象的不同行为的可用性,如:我们Android中自定义一个上拉加载更多,下拉刷新的PullRefreshListV...
  • ydxlt
  • ydxlt
  • 2015年12月31日 13:52
  • 6713

面向对象设计思想与常见设计模式小结

面向对象思想设计原则 单一职责原则 开闭原则 里氏替换原则 依赖注入原则 接口分离原则 迪米特原则 设计模式的分类 简单工厂模式 简单工厂模式概述 工厂方法模式 工厂方法模式概述 单例设计模式 单例设...
  • lutianfeiml
  • lutianfeiml
  • 2016年09月05日 16:55
  • 1530

Java面向对象设计模式

设计模式(Design Patterns)                                   ——可复用面向对象软件的基础       设计模式(Design pattern)是...
  • u011814346
  • u011814346
  • 2017年05月02日 14:17
  • 677

设计模式-可复用面向对象软件的基础 [读书笔记]

1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。   在软件设计中可能会遇到很多类似的问题,在每次遇到类似...
  • AnnaLoad
  • AnnaLoad
  • 2016年04月17日 10:26
  • 1647

以一个简单的项目来学习面向对象编程(设计模式和多线程)

下面的项目是两年前学校老师布置的一个小项目,当时自己用了一种很笨拙的方式实现了,现在用面向对象的思想和多线程重构这个项目。问题描述:西宝高速仿真模拟 西安市到宝鸡市之间是我省主要的高速公路客运路线之...
  • yang_yulei
  • yang_yulei
  • 2015年03月09日 20:44
  • 2873

面向对象的设计模式(五),策略模式

策略模式,顾名思义,就是在一个问题有多种解决方法的时候应用哪种方法,哪种策略来完成而设计的一种模式,以达到高解耦,灵活性高,代码更加清晰明了。策略模式又是一种面向对象的设计模式,说白了,所有的这些模式...
  • ydxlt
  • ydxlt
  • 2015年12月30日 14:13
  • 5609
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象和设计模式
举报原因:
原因补充:

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