level 6
西安恩仪联教育
楼主
软件开发之设计模式概述
目录:
1、什么是设计模式
2、设计模式优点
3、常用设计模式
一、什么是设计模式
如果把修习软件开发当做武功修炼的话,那么可以分为招式和内功。每一位软件开发人员也都希望成为一名兼具淋漓招式和深厚内功的“上 乘”软件工程师,而对设计模式的学习与领悟将会让你“内功”大增,再结合 你日益纯熟的“招式”,你的软件开发“功力”一定会达到一个新的境界。
招式可以很快学会,但是内功的修炼需要更长的时间。
《每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作》来之《建筑的永恒之道》by Christopher Alexander。
设计模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
软件设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过
分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码
更容易被他人理解并且保证代码可靠性。
我们可用一句大白话:“在一定环境下,用固定套路解决问题。”
二、设计模式作用
学习设计模式将有助于更加深入地理解面向对象思想,具体让你知道:
(1)如何将代码分散在几个不同的类中?
(2)为什么要有“接口”?
(3)何谓针对抽象编程?
(4)何时不应该使用继承?
(5)如果不修改源代码增加新功能?
(6)更好地阅读和理解现有类库与其他系统中的源代码。
三、几种常用设计模式
1、单例模式
保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。单例模式提供了对唯一实例的受控访问。节约系统资源,由于在系统内存中只存在一个对象。
应用场景:
(1)、配置管理:
在应用程序中,往往需要全局访问配置信息,如数据库连接信息、API密钥等。使用单例模式可以确保这些配置信息在应用运行期间只被初始化一次,同时提供全局访问。
(2)、日志记录:
在大型项目中,通常需要一个统一的日志记录器来记录所有关键操作。使用单例模式可以确保日志记录器是全局唯一的,便于集中管理日志。
(3)线程池管理:
在多线程应用中,通常需要一个线程池来管理线程资源,避免频繁创建和销毁线程的开销。通过单例模式可以确保线程池的全局唯一性和高效管理。
2、观察者模式
观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。
应用场景:
(1)跨模块通信
当不同模块需要基于同一数据源进行动态响应时,例如游戏引擎中多个系统(物理引擎、渲染引擎)共享同一场景数据并需同步更新。
(2)用户界面绑定
在MVC架构中,视图层(View)与模型层(Model)的解绑定,例如Qt框架通过观察者模式实现信号与槽的动态连接
(3)动态数据同步
需要多个组件根据同一数据源变化进行自适应调整的场景,如股票行情分析系统中多个指标(成交量、涨跌幅)同步更新。
(4)松耦合事件处理
当事件发布者与订阅者无需紧密耦合时,例如网络论坛中新帖发布后,多个用户模块根据权限动态响应。
3、代理模式
Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。
应用场景:
(1)远程代理(Remote Proxy):当你需要和一个位于远程服务器上的对象通信时,通常你会创建一个局部代表来控制对该对象的访问。
(2)虚拟代理(Virtual Proxy):当你想要创建一个资源消耗较大的对象时,可以延迟创建这个对象的实际工作直到真正需要它的时候。
(3)保护代理(Protection Proxy):控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。
(4)智能引用(Smart Reference):在访问一个对象时,执行一些附加操作,比如自动释放内存、记录日志等。
(5)缓存代理(Cache Proxy):为那些昂贵的操作结果提供暂时的存储,这样多个客户端可以共亨这些结果。
2025年12月25日 03点12分
1
目录:
1、什么是设计模式
2、设计模式优点
3、常用设计模式
一、什么是设计模式
如果把修习软件开发当做武功修炼的话,那么可以分为招式和内功。每一位软件开发人员也都希望成为一名兼具淋漓招式和深厚内功的“上 乘”软件工程师,而对设计模式的学习与领悟将会让你“内功”大增,再结合 你日益纯熟的“招式”,你的软件开发“功力”一定会达到一个新的境界。
招式可以很快学会,但是内功的修炼需要更长的时间。
《每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作》来之《建筑的永恒之道》by Christopher Alexander。
设计模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
软件设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过
分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码
更容易被他人理解并且保证代码可靠性。
我们可用一句大白话:“在一定环境下,用固定套路解决问题。”
二、设计模式作用
学习设计模式将有助于更加深入地理解面向对象思想,具体让你知道:
(1)如何将代码分散在几个不同的类中?
(2)为什么要有“接口”?
(3)何谓针对抽象编程?
(4)何时不应该使用继承?
(5)如果不修改源代码增加新功能?
(6)更好地阅读和理解现有类库与其他系统中的源代码。
三、几种常用设计模式
1、单例模式
保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。单例模式提供了对唯一实例的受控访问。节约系统资源,由于在系统内存中只存在一个对象。
应用场景:
(1)、配置管理:
在应用程序中,往往需要全局访问配置信息,如数据库连接信息、API密钥等。使用单例模式可以确保这些配置信息在应用运行期间只被初始化一次,同时提供全局访问。
(2)、日志记录:
在大型项目中,通常需要一个统一的日志记录器来记录所有关键操作。使用单例模式可以确保日志记录器是全局唯一的,便于集中管理日志。
(3)线程池管理:
在多线程应用中,通常需要一个线程池来管理线程资源,避免频繁创建和销毁线程的开销。通过单例模式可以确保线程池的全局唯一性和高效管理。
2、观察者模式
观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。
应用场景:
(1)跨模块通信
当不同模块需要基于同一数据源进行动态响应时,例如游戏引擎中多个系统(物理引擎、渲染引擎)共享同一场景数据并需同步更新。
(2)用户界面绑定
在MVC架构中,视图层(View)与模型层(Model)的解绑定,例如Qt框架通过观察者模式实现信号与槽的动态连接
(3)动态数据同步
需要多个组件根据同一数据源变化进行自适应调整的场景,如股票行情分析系统中多个指标(成交量、涨跌幅)同步更新。
(4)松耦合事件处理
当事件发布者与订阅者无需紧密耦合时,例如网络论坛中新帖发布后,多个用户模块根据权限动态响应。
3、代理模式
Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。
应用场景:
(1)远程代理(Remote Proxy):当你需要和一个位于远程服务器上的对象通信时,通常你会创建一个局部代表来控制对该对象的访问。
(2)虚拟代理(Virtual Proxy):当你想要创建一个资源消耗较大的对象时,可以延迟创建这个对象的实际工作直到真正需要它的时候。
(3)保护代理(Protection Proxy):控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限。
(4)智能引用(Smart Reference):在访问一个对象时,执行一些附加操作,比如自动释放内存、记录日志等。
(5)缓存代理(Cache Proxy):为那些昂贵的操作结果提供暂时的存储,这样多个客户端可以共亨这些结果。