![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式轻松学
文章平均质量分 90
编程智界
分享 工作技巧 | 常用工具 | 提效神器 | 新奇事物
展开
-
设计模式之组合模式
创建一个抽象基类或接口(如。原创 2024-06-02 15:11:27 · 1050 阅读 · 0 评论 -
设计模式之代理模式
使用代理模式的主要优势是提高了应用的性能和响应性。在图像查看器示例中,代理模式允许我们延迟加载重量级对象(完整图像),从而不会阻塞用户界面或延迟用户与应用的交互。此外,通过使用代理,我们可以添加更多的功能,比如加载状态的提示、失败时的错误处理等,而不影响原有类的复杂性。代理模式不仅限于图像加载场景,它也广泛应用于其他需要控制对象访问的场景,如网络连接、大型文档的处理等,是一种非常实用且强大的设计模式。原创 2024-06-02 15:11:16 · 1279 阅读 · 0 评论 -
设计模式之模板方法模式
使用模板方法模式的主要优势是提高了代码复用性和维护性。通过定义一个固定的操作框架,在基类中实现通用功能,而将变化的部分留给子类来实现,我们可以轻松地添加新的报告类型而不必修改现有代码。这种模式尤其适用于那些步骤固定但每个步骤的具体实现可能变化的场景。此外,模板方法模式也强调了代码的结构化,使得算法的框架清晰易懂,而具体步骤的实现则更加灵活。这不仅有助于代码的扩展和维护,也使得代码更加易于测试和调试。原创 2024-06-02 15:11:07 · 638 阅读 · 0 评论 -
设计模式之命令模式
解耦命令的发起者和执行者:命令模式允许将操作请求封装成对象,这样可以用不同的请求、队列或日志来参数化其他对象,支持撤销操作。增强的控制:命令模式还支持操作的延时或排队执行,以及可以组合多个命令。宏命令:可以扩展命令模式以支持宏命令,即一次执行一系列操作。持久化命令:命令模式可以与持久化机制结合,以存储命令的日志,之后即便系统崩溃,也可以从日志中恢复。复合命令的撤销:通过在命令模式中增加组合命令的管理,可以优化复杂命令的撤销处理,使其更为灵活和强大。原创 2024-06-02 15:10:55 · 948 阅读 · 0 评论 -
设计模式之观察者模式
解耦生产者与消费者:观察者模式允许生产者(主题)和消费者(观察者)之间进行松耦合的交互,增强系统的灵活性。动态订阅/退订:观察者可以根据需要随时开始或停止接收更新,这对于动态变化的依赖关系特别有用。处理观察者在通知过程中的注销问题:当观察者在接收到通知的过程中从主题注销自己时,需要确保这一操作的安全性,防止迭代器失效。异步通知机制:在系统要求非阻塞操作或处理大量观察者时,可以实现异步通知机制。观察者更新的优先级:可以为观察者引入优先级,根据重要性或依赖的紧密性决定通知的顺序。原创 2024-06-02 15:04:15 · 987 阅读 · 0 评论 -
设计模式之适配器模式
使用适配器模式允许开发者在不修改旧代码的基础上,引入新的功能或库。这在维护大型项目或集成第三方库时尤其有用。通过创建一个适配器,新旧组件可以无缝合作,提高了代码的可维护性和扩展性。适配器模式不仅限于渲染系统,它可以广泛应用于任何需要桥接不同接口或类之间差异的场景。正确实施适配器模式可以极大地减少系统的复杂性,并使得代码更加清晰和可管理。原创 2024-06-02 15:03:39 · 844 阅读 · 0 评论 -
设计模式之桥接模式
实现接口定义了底层操作的方法。这些方法不直接由客户端调用,而是通过抽象层的方法间接调用。在示例中,原创 2024-06-02 13:59:51 · 678 阅读 · 0 评论 -
设计模式之原型模式
通过本文的探讨和示例实现,我们详细了解了原型模式在C++中的应用,尤其是在图形编辑软件的开发场景中。原型模式通过允许对象复制自身,为处理如图形对象这样的复杂对象提供了一个高效和灵活的创建策略。减少创建操作的复杂性:原型模式使得复制一个复杂对象变得简单,避免了新对象创建过程中需要的重复步骤。增加程序的动态性:可以在运行时通过注册和删除原型来动态地增加或减少产品的数量。优化性能和资源利用:通过复制已有对象来避免重复的初始化操作,从而节省了资源和提高了性能,尤其是当对象的创建成本较高时。原创 2024-06-02 13:59:11 · 1019 阅读 · 0 评论 -
设计模式之建造者模式
在本文中,我们探讨了建造者模式在设计复杂对象时的有效应用,特别是在构建一个模拟餐厅系统的实例中。我们看到,建造者模式提供了一种优雅的方式来分步骤构建一个复杂对象,同时保持代码的封装性和可维护性。灵活性:允许改变一个产品的内部表示。建造者独立于其他对象,使得你可以构建复杂的对象,其过程不会影响其他对象。控制性:提供对构建过程的精细控制。通过一个指导者类控制建造过程,你可以更改该过程而不影响正在构建的对象的代码。原创 2024-06-02 13:36:43 · 729 阅读 · 0 评论 -
设计模式之备忘录模式
备忘录模式的实现展示了如何有效地管理文本编辑器的状态历史,以支持撤销和重做操作。备忘录模式的组件互动:原发器(Originator)负责创建包含其当前状态的备忘录,并可以使用备忘录恢复到之前的状态。备忘录(Memento)封装了原发器的内部状态,从而使得该状态可以独立于原发器外部保存和恢复。管理者(Caretaker)管理备忘录的存储,确保备忘录的保存和获取按照需求进行,但它不查看或操作备忘录的内容。原创 2024-06-02 13:35:58 · 469 阅读 · 0 评论 -
设计模式之简单工厂模式
产品接口是所有具体产品类必须实现的接口。这个接口定义了所有产品应有的方法,确保所有具体产品类在功能上的一致性。封装创建逻辑:工厂类封装了所有关于创建对象的逻辑,使得客户端不需要知道具体的产品类。易于扩展:添加新的产品类型时,只需扩展工厂方法,而不需要修改现有的客户端代码。低耦合性:客户端代码只依赖于产品接口,而不是具体的产品类,这降低了代码之间的依赖关系,提高了代码的可维护性。原创 2024-05-11 07:52:55 · 981 阅读 · 0 评论 -
设计模式之单例模式
通过将配置管理功能集成到ConfigurationManager单例类中,我们实现了一个集中管理游戏服务器设置的机制。集中管理:所有的配置管理都通过一个全局可访问的单一实例进行,减少了在多处维护配置逻辑的复杂性。数据一致性:无论配置数据如何变化,所有使用这些配置的组件都将获取到最新的设置,避免了数据不一致的问题。线程安全:通过互斥锁确保在多线程环境下对配置的访问和修改是安全的。私有构造函数单例模式的类应该将其构造函数设为私有,这样可以防止外部通过new关键字直接创建类的实例。禁止拷贝和赋值。原创 2024-05-10 08:12:46 · 1119 阅读 · 0 评论