zoukankan      html  css  js  c++  java
  • 面向对象设计原则、创建型设计模式 、结构型设计模式

    (一)如何衡量软件设计的质量

    p首要的标准
    ü满足软件的功能需求
    ü满足软件功能需求的设计并不一定就是好的设计。
    p好的设计
    ü可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给大型软件的开发和维护过程带来严重的危害。
    ü可复用性:软件系统的架构、类、组件等单元能否很容易被本项目的其它部分或者其它项目复用。
    ü可扩展性:软件面对需求变化时,功能或性能扩展的难易程度。
    ü可维护性:软件维护(主要是指软件错误的修改、遗漏功能的添加等)的难易程度。
    p上面四个标准太抽象了,无法考量
    ü内聚度
    ü耦合度
     
    设计原则
    p“高内聚、低耦合”是所有优秀软件的共同特征。
    p如何做到?
    p在设计时遵循一定的设计原则。
    p

    设计原则名称

    设计原则简介

    重要性

    单一职责原则

    类的职责要单一,不能将太多的职责放在一个类中。

    ★★★★☆

    开闭原则

    软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能。

    ★★★★★

    里氏替换原则

    在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。

    ★★★★☆

    依赖倒转原则

    要针对抽象层编程,而不要针对具体类编程。

    ★★★★★

    接口隔离原则

    使用多个专门的接口来取代一个统一的接口。

    ★★☆☆☆

    组合/聚合复用原则

    在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系。

    ★★★★☆

    迪米特法则

    一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互。

    ★★★☆☆

    里氏替换原则的意义

    p里氏替换原则是使代码符合开闭原则的一个重要的保证,同时,它体现了:
    ü类的继承原则:里氏替换原则常用来检查两个类是否为继承关系。在符合里氏替换原则的继承关系中,使用父类代码的地方,用子类代码替换后,能够正确的执行动作处理。换句话说,如果子类替换了父类后,不能够正确执行动作,那么他们的继承关系就是不正确的,应该重新设计它们之间的关系。
    ü动作正确性保证:里氏替换原则对子类进行了约束,所以在为已存在的类进行扩展,来创建一个新的子类时,符合里氏替换原则的扩展不会给已有的系统引入新的错误。
    p
     
    p在面向对象的设计中,有两种方法可以实现对已有对象重用的目的,即通过组合/聚合,或者通过继承。那么,这两种不同的复用方式在可维护性方面有什么区别呢?
    p
    p1)组合/聚合复用
    p2)继承复用
     
     

    第三章创建型设计模式

    工厂模式Factory

    •定义:工厂模式就是集中创建实例对象
    •使用工厂模式的好处:

       1)客户类和工厂类分开。消费者任何时候需要某种产  品,只需向工厂请求即可。消费者无须修改就可以接纳新产品

       2)对象的创建由工厂来完成, 类之间的耦合大大减少,变成为类和工厂之间的耦合了.

    • 3)对象的创建和使用分离,达到解耦合的目的。
    •对面向对象设计原则的支持:

       1)简单工厂模式一定程序上是支持开闭原则的;但是对开闭原则支持不够。(引入新产品的时候要修改工厂类)

       2)工厂方法模式可以满足开闭原则

       3) 为了满足依赖倒置原则常常需要使用工厂模式

    原型模式-Prototype

    •定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节
    •实现方式:

        通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

    •使用情况:

       1)很多时候,创建对象的时候,只是在某些属性值上有区别,而大部分都很相似,该类的用户对于该类的对象是怎么创建的,对类的内部结构这些都不关心的情况,但是这样的对象的初始化相对来说比较复杂,而且需要耗费较长的时间或资源,这种情况下,我们可以考虑使用Prototype模式。

     
     

    《Java面向对象设计》

    第四章结构型设计模式

    p结构型设计模式用于处理类或对象之间的组合,即描述类和对象之间怎样组织起来形成大的结构,从而实现新的功能。
    p
    p
    p
    p实现的机制:
    ü结构型对象模式采用组合/聚合机制来组合类,包括桥梁模式(Bridge)、组合模式(Composite)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(FlyWeight)、代理模式(Proxy)。

    结构型类模型采用继承机制来组合类,包括适配器模式(Adapter)

    桥梁(Bridge)模式

  • 相关阅读:
    个人:我的2011生活看板
    个人管理:公司做的稻盛阿米巴培训笔记
    使用TOGAF来做业务架构 价值驱动产品开发
    30天敏捷结果(21)正面失败,吸取教训,改善结果
    2010年12月blog汇总:敏捷个人
    30天敏捷结果(25):固定时间,灵活范围
    101与金根回顾敏捷个人:(11)执行力
    团队管理:设计团队的一周
    云:构建云计算的核心技术与平台
    读书笔记:千万别学英语
  • 原文地址:https://www.cnblogs.com/zzwx/p/4658687.html
Copyright © 2011-2022 走看看