设计模式及其应用

什么是设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。为了代码的可重用性、让代码更容易被他人理解、保证代码的可靠性,通常会使用设计模式,设计模式可以使代码编写真正工程化,它是软件工程的基石脉络。

设计模式开发原则

  • 开闭原则
  • 里氏替换原则
  • 依赖倒转原则
  • 接口隔离原则
  • 迪米特法则
  • 合成复用原则

设计模式如何解决问题

1. 寻找合适的对象

面向对象程序由对象组成,对象包括数据和对数据进行操作的过程,过程通常称为方法或操作。对象在收到客户的请求(或消息)后,执行相应的操作。客户请求是使对象执行操作的唯一方法,操作又是对象改变内部数据的唯一方法。
由于这些限制,对象的内部状态是被封装的,它不能被直接访问,它的表示对于对象外部是不可见的。

2. 决定对象的粒度

对象在大小和数目上的变化极大。它们能表示下自硬件或上自整个应用的任何事物。Facade 模式描述了怎样用对象表示完整的子系统。Flyweight 模式描述了如何支持大量的最小粒度的对象。其他一些设计模式描述了将一个对象分解成许多小对象的特定方法。Abstract Factory 和 Builder 模式产生那些专门负责生成其他对象的对象。Visitor 和 Command 生成的对象专门负责实现对其他对象或对象组的请求。

3. 指定对象接口

对象声明的每一个操作指定操作名、作为参数的对象和返回值,这就是所谓的操作的型构。对象接口描述了该对象所能接受的全部请求的集合,任何匹配对象接口中型构的请求都可以发送给该对象。设计模式通过确定接口的主要组成成分及经接口发送的数据类型,来帮助你定义接口。

4. 描述对象的实现

对象通过实例化类来创建,此对象被称为该类的实例。抽象类(Abstract Class)的主要目的是为它的子类定义公共接口。一个抽象类将把它的部分或全部操作的实现延迟到子类中,因此,一个抽象类不能被实例化。子类能够重定义父类定义的操作,重定义使得子类能接受父类对请求的处理操作。
面向对象的设计原则:针对接口编程,而不是针对实现编程。

5. 运用复用机制

面向对象系统中功能复用的两种最常用技术是类继承和对象组合。类继承允许你根据其他类的实现来定义一个类的实现。这种通过生成子类的复用通常被称为白箱复用。对象组合是通过获得对其他对象的引用而在运行时刻动态定义的。组合要求对象遵守彼此的接口约定,进而要求更仔细地定义接口。
面向对象的设计原则:优先使用对象组合,而不是类继承。

6. 关联运行时和编译时的结构

代码不可能揭示关于系统如何工作的全部,系统的运行时结构更多地受到设计者的影响,而不是编程语言。对象和它们的类型之间的关系必须更加仔细的设计,因为它们决定了运行时程序结构的好坏。

7. 设计应支持变化

获得最大限度复用的关键在于对新需求和已有需求发生变化时的预见性,要求你的系统设计要能够相应的改进。一个不考虑系统变化的设计在将来就有可能需要重新设计。设计模式可以确保系统能以特定方式变化,从而帮助你避免重新设计系统。

设计模式在编程中如何使用

1.在优化代码的时候使用设计模式

在我们实现中,有一些代码是一次写好后续基本不会改变的,或者不太需要扩展的,比如一些工具类等。有一部分是会经常改变的,设计模式大多都应用在需求会变化的这一部分,分析这些代码会如何变,选择合适的设计模式来优化这部分代码。当需要对代码进行优化时,那么这个时候就需要尝试去找问题了。检查代码中是否有很多重复片段,是否有很多冗长的代码,一个类的职责是否过多,如果客户提出修改代码是否能进行维护和修改。此时如果发现有地方需要进行优化,而优化的方式有所参考的话,就可以进行使用设计模式。

2.设计模式多用于复杂系统,方法设计,负责业务逻辑,增加代码可维护性方面

设计模式是一种思想,当系统较为复杂时,这时可以考虑采用合适的设计模式进行方法设计,减少代码的冗余度,提高代码的可维护性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值