`
ms7592
  • 浏览: 46721 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

面向对象的设计原则与目标

    博客分类:
  • .NET
阅读更多

一、面向对象技术基本概念
      面向对象技术基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计、构建相应的软件系统.

面向对象的特征

– 抽象,先不考虑细节
– 封装,隐藏内部实现
– 继承,复用现有代码
– 多态,改写对象行为

 

二、面向对象的设计目标
1、可扩展性Extensibility
–容易添加新的功能
2、灵活性Flexibility
–容易添加新的功能代码修改平稳地发生
3、可插入性Pluggability
–容易将一个类抽出去,同时将另一个有同样接口的类加入进来

 

三、面向对象设计基本的设计原则:
1、针对接口编程,而不是针对实现编程
– 客户无需知道所使用对象的特定类型,只需要知道对象拥有客户所期望的接口。
2、优先使用对象组合,而不是类继承
– 继承在某种程度上破坏了封装性,子类父类耦合度高;而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低。
3、封装变化点
– 使用封装来创建对象之间的分界层,让设计者可以在分界层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合。

 

四、面向对象的设计原则:

1、“开-闭”原则(Open-Closed Principle,OCP)封装的问题 - 对可变性封装
    一个软件实体应当对扩展开放,对修改关闭。 你添加新功能的时候应该只是向代码集中添加新的代码不应该修改原来的代码。

2、里氏代换原则(Liskov Substitution Principle, LSP) 职责的问题 - 如何进行继承
   LSP原则要求子类可以无条件的替代父类,子类不能对父类没有暴露的接口进行扩展,客户要调用功能只能通过父类暴露的接口来调用用不能擅自向子类调用。

3、依赖倒转原则(dependence inversion principle, DIP) 耦合度问题 - 针对接口编程
   依赖倒转原则就是要实现依赖于抽象,抽象不要依赖于实现。要针对接口编程,不要针对实现编程。

4、合成/聚合复用原则(Composite/Aggregate Reuse Principle或CARP) 复用问题 - 尽量使用组合/聚合、尽量不使用继承
   在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。

5、迪米特法则(Law of Demeter,LoD)  耦合度问题 - 不要和陌生人说话
   一个软件实体应当尽可能少的与其他实体发生相互作用。 迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。

6、接口隔离原则(interface separate principle, ISP) 职责单一 - 恰当的划分角色和接口
   使用多个专门的接口比使用单一的总接口要好。也就是说,一个类对另外一个类的依赖性应当是建立在最小的接口上。


五、目标与原则的关系

1、可扩展性Extensibility :允许一个具有同样接口的新类替代旧类,是对抽象接口的复用。客户端依赖于抽象接口,而不是一个具体实现类,使得这个具体类可以被别的具体类替换,而不影响客户端
 开/闭原则、里氏替换原则、依赖倒转原则、合成/聚合复用原则

2、灵活性Flexibility:模块相对独立,通信尽可能少。这样当一个模块修改时,对别的模块的影响很小。
开/闭原则、Demeter 法则、接口隔离原

3、可插入性Pluggability:当一部分不再满足需要时,可以将旧的部分拔出,新的部分插入。
开/闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则

分享到:
评论

相关推荐

    面向对象的思想与设计模式

    包括: oo与设计模式的原则,目标 简单工厂模式 工厂方法模式 抽象工厂模式

    C++面向对象程序设计课件

    面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。 面向对象编程(Object Oriented Programming,OOP,面向对象...

    什么是面向对象的程序设计

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:...

    面向对象与UML资料

    面向对象设计的概念 21 面向对象的设计方法 21 第三章 UML概述 22 UML对软件工程的重大影响 22 UML的概念模型 22 UML的建模思想 23 第四章 用UML建模 24 第一节 建模概念 24 系统、模型和视图 24 概念和现象 25 数据...

    PHP_面向对象教程(强力推荐).pdf

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程 架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:...

    src.zip Java的面向对象编程·讲解代码

    类和对象 三大特性:封装、继承、多态 面向对象编程(OOP)和面向过程编程(PP) 方法重载和方法重写 接口和抽象类 包和访问修饰符 ...最终目标是帮助学习者构建良好的面向对象设计思路,并应用到实际的软件

    PHP_面向对象教程(强力推荐)

    面向对象编程 (ObjectOrientedProgramming,OOP, 面向对象程序设计)是一种计算机编程 架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:...

    《Java程序设计案例教程》教学课件05深入Java面向对象.pptx

    但是在编写过程中需要遵循另一个重要的面向对象设计原则:继承。 《Java程序设计案例教程》教学课件05深入Java面向对象全文共47页,当前为第4页。 5.2 继承 继承可以充分利用现有的代码,解决编程过程中代码冗余的...

    02-软件设计原则 模式深度解析和案例分析

    软件设计原则/深度解析 ---应用案例分析 设计模式应用策略1—建立面向对象思维 设计模式应用策略2—知道设计模式,知道自己不知道 设计模式应用策略3—贴身模仿,研读大师经典作品 设计模式应用策略4—根据场景,用模式...

    php面向对象全攻略 (一) 面向对象基础知识

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:重用...

    SOA服务设计原则(第一部分)

    本书首先简要介绍了SOA与面向服务的基本概念和关键目标,然后着重阐述了为实现SOA的目标需要遵守的8个核心设计原则:标准化服务合约、服务松散耦合、服务抽象、服务可复用性、服务自治、服务无状态性、服务可发现性...

    SOA服务设计原则].厄尔.扫描版(第二部分)

    本书首先简要介绍了SOA与面向服务的基本概念和关键目标,然后着重阐述了为实现SOA的目标需要遵守的8个核心设计原则:标准化服务合约、服务松散耦合、服务抽象、服务可复用性、服务自治、服务无状态性、服务可发现性...

    【05-面向对象(下)】

    •接口体现了规范与实现分离的原则。充分利用接口可以很好地提高系统的可扩展性和可维护性。 •接口与简单工厂模式、命令模式等。 内部类 •我们把一个类放在另一个类的内部定义,这个定义在其他类...

    Java设计模式(2.78G)

    x-oss-process=style/pnp8(157.43KB,下载次数:9)下载附件2019-10-1720:55上传〖课程介绍〗:知识要点:面向对象设计原则、UML、设计模式、Hibernate底层分析、IOC实现分析课程目标:掌握7大设计原则,掌握UML建模,...

    软件工程期末复习资料汇总(仅按本校考试大纲整合)

    chp1.1软件定义与软件特点 chp1.2软件危机与软件工程 ...面向对象设计的启发规则 系统设计步骤 对象分析 chp10.1软件实现 面对对象实现概念 chp11.1软件测试 软件测试概念 测试用例设计方法 动态测试 。。。。。

    2005-2009软件设计师历年真题

     •软件设计方法(结构化设计方法、Jackson方法、Warnier方法、面向对象设计方法)  •程序设计(结构化程序设计、面向对象程序设计)  • 软件测试的原则与方法  • 软件质量(软件质量特性、软件质量控制)  ...

    PHP 面向对象技术(全面讲解).txt

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程 架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:...

    软件设计原则

     软件体系结构是构建计算机软件实践的基础 与建筑师设定建筑项目的设计原则和目标 作为绘图员画图的基础一样 一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础 ">软件架构...

    初级java笔试题-oopnotes:面向对象编程笔记本,设计原则和模式参考指南

    我的目标是让任何人都能找到遵循面向对象范式正确设计可重用且高效的代码所需的核心概念。 在尝试学习自己的同时,我一直在努力研究并浪费大量时间在多个来源、课程、讲座上,甚至与同事交谈,试图学习我在这里涵盖...

Global site tag (gtag.js) - Google Analytics