面向对象设计原则、创建型设计模式 、结构型设计模式

 

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

 

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)模式

 

 

转载于:https://www.cnblogs.com/zzwx/p/4658687.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值