设计模式无招胜有招之设计技术-面向对象设计语言支持

原创 2016年06月01日 15:30:52

  面向对象的设计语言提供了很多和对象相关的技术。

  面向对象的基本特征,封装继承和多态;JAVA里面提供了反射;函数重载;C++里面的模板;多重继承;接口继承;抽象类等等。

  这些技术在面向对象设计的时候能够在可扩展性上提供最基础的支持。


1 封装

在面向对象的程序设计出现之前,流行的是面向过程的程序设计。所谓的面向过程是指把要解决的问题分为几个步骤,每个步骤按照顺序执行。其中,每个步骤还可以划分为更小的步骤。每个步骤可以用一个函数来实现。用现在的话讲,就是面向函数编程。在这种编程中,函数是编程的中心。当拿到需求后,把需求分解为按照顺序执行的函数。可以看到设计的中心在函数,而数据只是辅助。且数据和函数是分离的。任何一个函数可以调用任何一个变量数据。

这种设计方式不适合越来越复杂的大型应用和需求。随着经验的增加,人们发现,数据和函数之间的逻辑联系比函数之间强。于是把数据和函数放在一个逻辑块中的愿望越来越强烈。面向对象的设计就慢慢诞生了。

封装是面向对象的第一个特征。封装就是把有逻辑联系的数据和函数组织在一块。

封装带来的 好处:

1)  组织性:类把数据和函数组织在了一起,这样使得代码更清晰,更有逻辑和组织。

2)  逻辑性:从类的内部看,封装就是增加了逻辑性

3)  隐藏性:从类的外部看,即类的使用者的角度看,类把它的内部和外部隔离开来。类可以使得类外部的变化不影响类的内部,也可以使得类内部有限暴露给外部的使用者。

在后面看到,设计模式中最重要的重构手段就是“封装变化”。这个后面再讲。

2 继承

面向过程的编程还有一个问题是代码的可重用性。

继承使得子类可以重用、修改和增加父类的功能(函数)。

但是随着人们实践经验的增加,人们逐渐发现继承被滥用了。继承是一种强依赖,子类对父类的强依赖。父类的变化会导致子类的急剧的变化。因此后面又一个新的重构的原则就是“优先使用组合而不是继承”。

继承被限制在接口继承上,而不是实现继承。


3 多态

多态是最后被加到C++中的一个特性。当多态出现的时候,引起了很大 争论。人们认为多态是没有必要的一个特性。当然今天,人们普遍认为多态是面向对象设计的核心。

多态是指拥有相同接口的对象在运行时候,可以相互替换。定义了一组有相同接口的父类和子类。在语法层面,父类可以指向子类。于是在静态编译期间,你看到执行了一个函数。但是你并不知道是执行的那个函数。直到运行时刻,这个父类指向的是哪个子类才能确定下来。且这个指向的子类是可以随时替换的。

也就是说当你写好了“执行父类指针调用函数后”,在不改变这段代码的前提下,只要你能够使得指针指向不同的子类,那么就会有不同的执行结果。当需求发生改变的时候,你不必要改代码,只要增加一个实现需求的子类,就可以完成需求的变更。

这个就是后面所有的面向对象设计的基本原理。


版权声明:本文为博主原创文章,未经博主允许不得转载。

设计模式无招胜有招之设计目的

为什么大家都说计算机是青春饭呢?这是因为大部分计算式知识是个纯粹的对错的知识。比如你学习C++编程,写个表达式,编译器能过就是对的,不能过就是错的。而这个对错的门槛是非常低的。任何人只要学过几天都会的...

面向对象技术之设计模式

  • 2012年11月28日 20:32
  • 32.6MB
  • 下载

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

面向对象设计模式  常用的面向对象设计模式有4种: Factory模式、Singleton模式、Facade模式和MVC架构模式。  JSP设计模式  SUN公司推出JSP技术后,同时也推...

Java乔晓松-JavaWeb技术-面向对象设计模式(MVC)

面向对象设计模式       面向对象软件开发领域中,设计模式包括一些规则来完成一定任务。设计模式针对一些特定的问题,提出一种解决方案。       常用的面向对象设计模式有4种:       ...

11 java 王少飞-JavaWeb技术之面向对象设计模式

面向对象设计模式 面向对象软件开发领域中,设计模式包括一些规则来完成一定任务。设计模式针对一些特定的问题,提出一种解决方案。 常用的面向对象设计模式有4种: Factory模式、Singleto...

黑马程序员——Java语言基础:面向对象、封装(构造函数、设计模式)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  一、理解面向对象 面向对象和面向过程都是一种思想,面向对象是相对面向过程而言...

设计模式——C语言的面向对象

在大学的第一门课里,

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

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!概述在运用面向对象的思想进行软件设计时,需要遵循的原则一共有7个,他...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式无招胜有招之设计技术-面向对象设计语言支持
举报原因:
原因补充:

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