23种设计模式应用场景汇总
设计模式是一种在软件开发中解决特定问题的通用解决方案。下面我将尝试将23种设计模式融入到一个场景中:
假设我们正在开发一个在线购物系统,我们可以使用以下设计模式:
- 1. 工厂方法模式:当用户在网站上下订单时,我们可以使用工厂方法模式来创建订单对象,根据用户选择的商品类型,使用不同的工厂来创建相应的订单对象。
分为:工厂模式分为:简单工厂、工厂方法、抽象工厂。
1、简单工厂通过参数决定创建哪个实例、
2、工厂方法将工厂、产品提出抽象接口、每一种产品对应一个工厂,最后根据用户的参数,使用不同的工厂创建不同的产品实例。
3、抽象工厂:是一个工厂创建一系列产品(比如windos上的GUI组件:windows版本的按钮、文本框、选择按钮等,是与linux或MacOs下的不同)。产品1(A系列产品1、B系列产品2),产品2(A系统产品2、B系列产品2),工厂(A系列工厂、B系列工厂),A工厂就会创建A系列产品1、A系列产品2;B工厂创建B系列产品1、B系列产品2.
- 2. 单例模式:我们可以使用单例模式来确保系统中的购物车对象只有一个实例,以确保用户在整个会话期间都使用同一个购物车。
懒汉式和饿汉式。五种,最重要的是线程安全。
- 3. 观察者模式:当用户下订单时,我们可以使用观察者模式通知库存管理系统和仓库系统更新库存。这样,一旦有商品被下单,其他系统就会及时得到通知。
观察者模式
- 4. 策略模式:在计算订单总价时,我们可以根据用户的会员等级或者促销活动来选择不同的计价策略,这就是策略模式的应用。
- 5. 适配器模式:当我们需要将外部支付f接口整合到系统中时,我们可能需要使用适配器模式来将外部接口适配成我们系统内部的统一接口。
- 6. 装饰者模式:如果我们需要在订单中加入礼品包装、贺卡等功能,可以使用装饰者模式动态地为订单对象添加额外的功能。
- 7. 命令模式:在处理用户的退货请求时,我们可以使用命令模式将用户的退货请求封装成命令对象,然后由相应的命令对象来执行具体的退货操作。
- 8. 模板方法模式:在生成订单报告时,我们可以使用模板方法模式定义生成报告的流程,然后在具体的报告生成类中实现具体的步骤
- 9. 原型模式:在系统中有一些商品是定制化的,我们可以使用原型模式来克隆商品对象,以便快速创建定制化商品的副本。
- 10. 抽象工厂模式:如果我们的系统需要支持多个不同类型的支付方式(比如信用卡、支付宝、微信支付等),我们可以使用抽象工厂模式来创建不同支付方式的工厂,从而实现一个统一的支付接口。
- 11. 建造者模式:当用户在网站上定制礼篮时,我们可以使用建造者模式来创建复杂的礼篮对象,将其构建过程与表示分离,使得构建过程可以创建不同的表示。
- 12. 状态模式:在订单处理流程中,订单可能会经历多个状态(比如待支付、已支付、已发货、已签收等),我们可以使用状态模式来管理订单的状态转换,使状态转换更加清晰和可维护。
- 13. 桥接模式:如果我们需要在不同的平台上展示商品信息(比如网站、移动端、微信小程序等),我们可以使用桥接模式将平台和商品信息的展示进行解耦,从而让它们可以独立地变化。
- 14. 组合模式:在管理商品分类树的时候,我们可以使用组合模式来表示商品分类和子分类的层次结构,以便对整个分类树进行统一的操作。
- 15. 迭代器模式:当需要遍历购物车中的商品列表时,我们可以使用迭代器模式来提供一种统一的方式来遍历不同类型的购物车。
- 16. 访问者模式:如果需要对不同类型的商品进行不同的操作(比如打印、计算价格等),我们可以使用访问者模式来实现对商品的不同操作,而不需要修改商品类的代码。
- 17. 备忘录模式:在用户进行购物车操作时,我们可以使用备忘录模式来保存购物车的状态,以便用户可以在需要时恢复到之前的状态。
- 18. 解释器模式:如果我们需要实现一些复杂的促销规则或者查询条件,可以使用解释器模式来定义一个解释器,用于解释和执行这些规则或者条件。
- 19. 中介者模式:当订单系统、库存系统和物流系统之间需要进行协作时,我们可以使用中介者模式来将它们的交互行为封装到中介者对象中,从而降低系统中各个对象之间的耦合度。
- 20. 外观模式:当需要为客户端提供一个统一的接口来访问子系统中的一群接口时,可以使用外观模式来简化客户端与子系统之间的交互。
- 21. 代理模式:在系统中,我们可以使用代理模式来控制对敏感信息的访问,比如用户的个人信息,可以通过代理对象来进行访问控制。
- 22. 责任链模式:当系统中需要处理一系列的请求,并且每个请求可能由不同的处理者来处理时,可以使用责任链模式来实现请求的传递和处理。
- 23. 享元模式:电商系统通常需要管理大量商品,每个商品可能有多个属性和规格(比如颜色、尺码等),而这些属性和规格可能是可以共享的。