设计模式应用场景

本文探讨设计模式中的核心原则,如单一职责原则、开放封闭原则、里氏代换原则、依赖倒转原则和迪米特法则。并介绍了策略模式、装饰模式、代理模式、工厂方法模式、原型模式、模板方法模式、外观模式、建造者模式和观察者模式等经典模式的应用场景,旨在帮助开发者更好地理解和运用设计模式解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发现职责并把职责分离,就一个类而言,应该仅有单一职责,这就是单一职责原则精神。

尽可能早的创建抽象隔离变化,面对需求,对程序的改动是通过增加新代码进行的,而不是改动现有代码这就是开放封闭原则精神所在。

里氏代换原则就是子类型必须能够替换掉他们的父类型,而程序的行为没有变化。

依赖倒转原则两点:1.高层模块不应该依赖底层模块,它们都依赖于抽象。2.抽象不应该依赖细节,细节应该依赖抽象。依赖倒转是面向对象设计的标志,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象设计,反之即过程化设计。

迪米特法则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,如果其中一个类需要调用另一个类的某一个方法的话,通过第三方转发这个调用。其根本思想是强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改不会对有关系的类造成波及。

只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。

装饰模式考虑应用场景是当需要执行特殊行为,客户代码在运行时需要根据要求有选择的按顺序使用装饰功能包装对象时。

代理模式应用在四种场合:

1.远程代理,为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实,比如WebService在.NET中的应用。

2.虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。比如浏览器优化图片下载。

3.安全代理,用来控制真实对象访问时的权限,一般用于对象应该有不同访问权限的时候。

4.智能指引,当调用真实的对象时,代理处理另外一些事。访问一个对象时附加一些内务处理。

工厂方法模式用在需要封装对象创建过程,降低客户程序与产品对象的耦合时。

它是简单工厂模式的进一步抽象和推广,保持了简单工厂的优点,克服了它违反开放封闭的缺点。其缺点是每加一个产品就需要增加一个产品工厂的类,增加了额外开发量。

原型模式用在需要以某个类为原型,拷贝原型创建多个新的对象时。

当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,就应该考虑模板方法模式来处理。

当需要简单调用子系统功能时应考虑外观模式。

你需要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示意图时使用建造者模式。 它是当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。

当一个对象的改变需要同时改变其它对象,而且它不知道具体有多少对象有待改变时,就考虑观察者模式。 观察者模式做的工作就是解除耦合,让耦合双方都依赖于抽象而不依赖于具体,使得各自变化都不会影响另一边的变化。

抽象工厂模式用在涉及多个产品系列问题时。交换产品系列时,只需要改变具体工厂即可使用不同产品配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值