设计模式好例子网站

<think>好的,我现在需要向用户介绍设计模式例子。用户可能对设计模式有一定的了解,但不太清楚具体有哪些模式以及它们的实际应用。首先,我应该回顾常见的设计模式分类,比如创建型、结构型和行为型。 接下来,我需要为每个类别挑选几个典型的设计模式,并找到合适的例子。创建型模式中的单例模式很常见,比如日志记录器。结构型模式中的适配器模式可以用电源适配器来类比,这样用户容易理解。行为型模式中的观察者模式,比如邮件订阅系统,是一个很好的例子。 然后,我需要确保每个例子都能清晰地展示设计模式解决的问题和实现方式。例如,单例模式确保全局只有一个实例,适配器模式解决接口不兼容的问题,观察者模式处理对象间的动态通知。 同时,要注意使用用户熟悉的场景,避免过于技术化的术语,让解释更易懂。例如,用订单处理流程来解释策略模式中的不同支付方式选择,这样用户能直观地理解策略的应用。 可能还需要考虑用户的实际需求,他们可能想了解如何在实际项目中应用这些模式,所以例子应贴近实际开发场景。比如,工厂模式用于创建不同类型的数据库连接,这在很多应用中都会遇到。 最后,要检查例子是否准确,是否符合设计模式的定义,避免错误或混淆。确保每个模式的描述简洁明了,结构清晰,帮助用户建立正确的理解。</think>以下是3类常用设计模式及通俗易懂的示例说明: --- ### 一、创建型模式(对象创建) 1. **单例模式** - 场景:系统日志记录器 - 实现:保证整个系统只存在一个日志实例 ```java public class Logger { private static Logger instance; private Logger() {} // 私有构造 public static Logger getInstance() { if(instance == null) { instance = new Logger(); } return instance; } } ``` 2. **工厂模式** - 场景:数据库连接工厂 - 实现:根据配置创建MySQL/Oracle等不同数据库连接 ```python class DatabaseFactory: def create_connection(self, db_type): if db_type == "mysql": return MySQLConnection() elif db_type == "oracle": return OracleConnection() ``` --- ### 二、结构型模式(对象组合) 1. **适配器模式** - 场景:电源转换插头 - 实现:将美标110V接口转换为国内220V接口 ```java // 现有美标接口 interface AmericanPlug { void supply110V(); } // 适配器实现中国标准 class ChinaAdapter implements ChinaSocket { AmericanPlug plug; public void supply220V() { plug.supply110V(); // 添加电压转换逻辑... } } ``` 2. **装饰器模式** - 场景:咖啡加料系统 - 实现:基础咖啡+动态添加牛奶/糖等配料 ```python class Coffee: def cost(self): return 20 class MilkDecorator(Coffee): def __init__(self, coffee): self._coffee = coffee def cost(self): return self._coffee.cost() + 5 ``` --- ### 三、行为型模式(对象交互) 1. **观察者模式** - 场景:新闻邮件订阅 - 实现:当有新文章发布时,自动通知所有订阅者 ```java interface Subscriber { void update(String news); } class NewsAgency { private List<Subscriber> subscribers = new ArrayList<>(); public void publish(String news) { for(Subscriber s : subscribers) { s.update(news); } } } ``` 2. **策略模式** - 场景:订单支付方式 - 实现:运行时切换支付宝/微信/银联等支付策略 ```python class PaymentStrategy: def pay(self, amount): pass class AlipayStrategy(PaymentStrategy): def pay(self, amount): print(f"支付宝支付{amount}元") class PaymentContext: def __init__(self, strategy): self.strategy = strategy def execute_payment(self, amount): self.strategy.pay(amount) ``` --- ### 实际开发建议 1. 不要为了用模式而用模式,优先保持代码简洁 2. 大型项目中使用工厂模式、观察者模式频率较高 3. 框架开发中常用模板方法、责任链等模式 4. 微服务架构中常见代理模式、装饰器模式的应用 每个设计模式都是特定场景的最佳实践总结,理解其解决的问题域比死记实现更重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值