浅析面向可复用性和可维护性的设计模式

一.设计模式

1.概念:

设计模式,英文名为Design pattern,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于自己于他人于系统都是多赢的,它使代码编制真正的工程化。在项目中合理的运用设计模式可以完美的解决很多问题,每种模式在当下都有相应的原理来与之对应,且它也描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案。

2.遵循的五大原则(SOLID):

(1)The Single Responsibility Principle 单一责任原则:不应有多于1个的原因使得这个类发生变化。

(2)The Open-Closed Principle 开放-封闭原则:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。一句话概括就是:为了使程序的扩展性好,易于维护和升级。

(3)The Liskov Substitution Principle Liskov 替换原则:任何父类可以出现的地方,子类一定可以出现。 这个原则是继承复用的基石,只有当子类替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

(4)The Dependency Inversion Principle 依赖转置原则:针对接口编程,依赖于抽象而不依赖于具体。

(5)The Interface Segregation Principle 接口聚合原则:使用多个隔离的接口,比使用单个接口要好,主要目的是降低类之间的耦合度。

3.种类:

总体来说设计模式分为三大类:

(1)创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

(2)结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

(3)行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

而在《软件构造》课上涉及到的只有七种,分别是:

(1)创建型模式(1种):工厂方法模式。

(2)结构型模式(2种):适配器模式、装饰器模式。

(3)行为型模式(4种):策略模式、模板模式、观察者模式、访问者模式。

所以本文只介绍课上涉及的这七种。

创建型模式

工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。如下图所示,就是工厂模式的基本框架。若是出现了大量的产品需要创建,并且具有共同的接口时,就可以通过工厂模式进行创建。

结构型模式

1.适配器模式:将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。下图就是适配器模式的大体框架。

2.装饰器模式:给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口。装饰对象持有被装饰对象的实例,如下所示就是大体框架图。

行为型模式

1.策略模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。

2.模板模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。一个抽象类中,有一个主方法,再定义1到n的任意个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。

3.观察者模式:多个对象间存在一对多关系,当一个对象发生改变时,会把这种改变通知给其他多个对象,从而影响其他对象的行为。下图是观察者模式的模板框架。

4.访问者模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。下图是访问者模式的框架图。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值