OO与设计模式的原则、目标

原创 2011年08月30日 19:32:23

前两天,和一朋友聊到OO设计原则时,对设计模式有了更深的了解,在这里总结一下,与大家分享。
OO(Object–Oriented )面向对象 
  OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

OO的设计目标:

  • 可扩展性:有了新的需求,新的性能可以容易添加到系统中,不影响现有的性能,也不会带来新的缺陷。
  • 可修改性:系统一部分的代码要修改时不会破坏系统的现有结构,也不会影响到其它的部分。
  • 可替换性:可以将系统中的某些代码替换为相同接口的其它类,不会影响到系统。

设计模式的设计原则:

  • “开放--封闭”原则:
    设计模式的核心原则。软件实体(类,模块,函数)对于扩展是开放的,对于修改是关闭的 。实现开闭原则的关键就是抽象化。“开放--封闭”原则中,不允许修改的是抽象的类或者接口。允许扩展的是具体的实现类,抽象类和接口在“开-闭”原则中扮演着极其重要的角色 。
  • 封装变化点原则:
    这是对"开-闭"原则最好的实现..不要把你的可变因素放在多个类中,或者散落在程序的各个角落..你应该将可变的因素,封套起来..并且切忌不要把所用的可变因素封套在一起..最好的解决办法是,分块封套你的可变因素!!避免超大类,超长类,超长方法的出现!!给你的程序增加艺术气息,将程序艺术化是我们的目标!!
  • 里氏代换原则:
    任何基类可以出现的地方,子类也可以出现 。
  • 依赖倒转原则:
    要依赖抽象,而不要依赖具体的实现。
    抽象不应当依赖于细节,细节应当依赖于抽象;要针对接口编程,不要针对实现编程
  • 单一职责原则:
    一个类应该只有一个引起它变化的原因。
  • 接口隔离法则 :
    为了做到尽可能小的耦合性,我们需要使用接口来规范类,用接口来约束类。要达到迪米特法则的要求,最好就是实现接口隔离法则。
    使用多个专门的接口比使用单一的总接口要好.从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口应当简单地代表一个角色,而不是多个角色。多个演员可以同时演一个角色,就象孙悟空的孩儿一样。
  • 合成/聚合原则:
    要尽量使用合成/聚合原则,而不是继承关系达到软件复用的目的。聚合用来表示“拥有”或整体与部分的关系,而合成则用来表示一种强得多的“拥有”关系。在一个合成关系里,部分和整体的生命周期是一样的。合成就象所说的“合成品”,拆开就坏。
  • 迪米特法则:
    系统中的类,尽量不要与其他类互相作用,减少类之间的耦合度。
    一个对象应当对其它对象有尽可能少的了解,两个类不必直接通信,可以通过第三者(抽象)转发这个调用,这个抽象的第三者可以是门面,可以是调停者,甚至是一个抽象类或接口,模块要独立,独立被封装,他们只靠public的API来通信,只要有可能,一个类应当设计成不变类,其属性都应该是私有的,如果一个类有太多的public访问权限的方法,可以考虑使用多个类把一个类的私有方法和公有方法分开。

聚合(Aggregation):

   这是一种松散的对象间的关系.举个例子:计算机和他的外围设备就是一例.

  用来表示拥有关系或者整体与部分的关系。

组合(Composition):

这是一种非常强的对象间的关系,举个例子,树和它的树叶之间的关系.

在一个合成里,部分与整体的生命周期都是一样的。一个合成的新对象完全拥有对其组成

部分的支配权。包括他们的创建和毁灭。

最后总结一下:

聚合:

  •  聚合有时能够不依赖部分而存在,有时又不能
  • 部分可以独立于聚合而存在
  • 如果有一部分遗失,聚合会给人一种不完全的感觉
  • 部分的所有权可以由几个聚合来共享,比如打印机

合成:

  • 部分某一时刻只能属于某一个组成
  • 组成唯一的负责处理它的所有部分--这就意味着负责他们的创建与销毁
  • 倘若对于部分的职责由其他对象来承担的话,组成也就可以放松这些职责。
  • 如果组成销毁的话,它必须销毁所有的部分,或者把负责他们的权利转移给其他对象。

设计模式所解决的问题:
通过显示指定类创建对象:
     相关的设计模式:简单工厂、工厂方法、抽象工厂。
紧耦合:
    相关的设计模式:抽象工厂、命令模式、外观模式、中介者模式、观察者模式、职责链模式等。
对对象表示或实现的依赖:
     相关的设计模式:抽象工厂、桥接模式、备忘录模式、代理模式等。
通过生成子类扩展功能:
     相关的设计模式:桥接模式、职责链模式、组合模式、装饰模式、观察者模式、策略模式等。
有能方便地修改类:
     相关的设计模式:适配器模式、装饰模式、访问者模式等。
对算法的依赖:
     相关设计模式: 生成器模式、迭代模式、策略模式、模板方法模式、访问者模式等。
对软硬件环境的依赖:
     相关设计模式:抽象工厂模式、桥接模式等。

参考:http://ankye1234.blog.163.com/blog/static/964828920075444512292/


java设计模之OO原则小结

一、松耦合的威力 观察者模式提供了一种对象设计,让主题和观察者之间松耦合。 当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。 关于观察者的一切,主题只知道观察者实现了某个接口(也就是O...
  • xiaokang123456kao
  • xiaokang123456kao
  • 2017-04-08 17:35:35
  • 419

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

  • 2011年11月15日 16:13
  • 116KB
  • 下载

OO与设计模式的原则、目标

前两天,和一朋友聊到OO设计原则时,对设计模式有了更深的了解,在这里总结一下,与大家分享。OO(Object–Oriented )面向对象   OO方法(Object-Oriented Method,...
  • gooddasenlin
  • gooddasenlin
  • 2008-02-20 17:50:00
  • 648

OO七大原则

OO七大原则为:单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、合成/聚合复用原则、迪米特法则 1、单一职责原则SRP(Simple Responsibility Principl...
  • ql15010832315
  • ql15010832315
  • 2016-11-11 12:27:34
  • 826

软件设计模式、目标、原则

软件设计模式 一、设计目标: ⑴、软件设计目标:正确性、健壮性、灵活性、可重用性、高效性 1、正确性:也就是满足应用程序的需求。 2、健壮性:是指软件对于规范要求以外的输入情况的处理能力。也就...
  • ljheee
  • ljheee
  • 2016-05-27 19:10:52
  • 3669

OO原则的五大原则

现将近期整理的文档提供给大家,这里对LSP做重点的介绍,望对大家有帮助,在学习和使用OO设计的时候,我们应该明白:OO的出现使得软件工程师们能够用更接近真实世界的方法描述软件系统。然而,软件毕竟是建立...
  • ruihaol
  • ruihaol
  • 2016-08-29 23:24:27
  • 974

OO设计五大原则

OO的五大原则是指SRP、OCP、LSP、DIP、ISP 1. SRP(Single Responsibility Principle 单一职责原则)  单一职责很容易理解,所谓单一职...
  • u014117094
  • u014117094
  • 2015-07-08 23:13:34
  • 1018

OO基本原则

1、单一职责 一个类应该最多只能有一个因素能够给导致其变化,类中的方法应该都是相关性很高的,即“高内聚” 2、里氏替换       利用多态特性,父类作用的地方可以使用其任意子类替代,反之不行 3、...
  • yangzheng110
  • yangzheng110
  • 2016-06-01 00:24:15
  • 541

OO六大设计原则总结(上层码农必会)

一直以来都严格遵循OO的原则来进行开发(用的工具是C++和Qt) 什么是设计原则? 设计原则是基本的工具,应用这些规则可以使你的代码更加灵活、更容易维护,更容易扩展。 基...
  • suxinpingtao51
  • suxinpingtao51
  • 2015-07-29 15:45:18
  • 2040

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

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!概述在运用面向对象的思想进行软件设计时,需要遵循的原则一共有7个,他...
  • yanbober
  • yanbober
  • 2015-04-27 16:25:48
  • 7222
收藏助手
不良信息举报
您举报文章:OO与设计模式的原则、目标
举报原因:
原因补充:

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