设计模式常用 场景

1. 单例模式 (Singleton Pattern)
用途:保证一个类只有一个实例,并提供全局访问点。
适用场景:数据库连接池、线程池、日志管理器等需要全局共享资源的地方。
示例:Logger 或 Configuration 类通常使用单例模式。

2. 工厂模式 (Factory Pattern)
用途:定义一个接口来创建对象,但让子类决定要实例化的具体类是哪一个。
适用场景:当类的实例化逻辑复杂或需要根据不同的条件创建不同的对象时。
示例:创建不同类型的文档、UI组件或服务的工厂类。

3. 策略模式 (Strategy Pattern)
用途:定义一系列算法,将它们封装起来,并使它们可以互相替换。
适用场景:当有多个算法或行为可以动态切换时(例如不同的排序算法)。
示例:支付系统可以用策略模式来处理不同的支付方式(如信用卡、PayPal、银行转账)。

4. 观察者模式 (Observer Pattern)
用途:定义对象间的一对多依赖关系,当一个对象的状态改变时,其所有依赖者都会收到通知并自动更新。
适用场景:事件驱动系统、通知系统。
示例:GUI系统的事件监听器、发布-订阅消息系统。

5. 装饰者模式 (Decorator Pattern)
用途:动态地为对象添加行为,而不影响其他对象。
适用场景:当需要在不修改现有代码的情况下扩展类的功能时。
示例:在Java的I/O系统中,BufferedInputStream、DataInputStream 都是基于装饰者模式实现的。

6. 命令模式 (Command Pattern)
用途:将请求封装成对象,使得可以用不同的请求、队列或者日志来参数化对象。
适用场景:在系统中需要对请求进行排队、日志记录、撤销/恢复操作时。
示例:GUI中的按钮点击操作、事务系统中的操作日志。

7. 代理模式 (Proxy Pattern)
用途:为另一个对象提供一个替身或占位符,控制对该对象的访问。
适用场景:需要控制访问权限、延迟加载、远程代理等场景。
示例:远程代理、虚拟代理、保护代理等。

8. 适配器模式 (Adapter Pattern)
用途:将一个类的接口转换成客户端期望的另一个接口,解决接口不兼容的问题。
适用场景:需要让不兼容的类协同工作时。
示例:将不同的数据源格式适配成统一的格式以供系统使用。

9. 模板方法模式 (Template Method Pattern)
用途:定义一个算法的骨架,并允许子类在不改变算法结构的情况下重定义特定步骤。
适用场景:当多个类有相似的逻辑,但其中一些步骤在子类中有所差异时。
示例:Java 中的 AbstractList 就使用了模板方法模式。

10. 建造者模式 (Builder Pattern)
用途:将对象的构造与表示分离,使得同样的构造过程可以创建不同的表示。
适用场景:创建复杂对象时,特别是那些需要一步步构建的对象。
示例:StringBuilder 和 DocumentBuilder 都是常见的例子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值