设计模式
文章平均质量分 52
push_rbp
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式简介
软件中面临的挑战来自于变化,如各种业务的变化导致我们去不停的修改软件。设计模式就是解决变化的问题,但是要明确的是,设计模式不是让变化消失,而是缩小变化的范围,如一只小猫在满屋子乱跑,会搞得满屋子都很混乱,但是如果将猫关在笼子里,那么混乱只会发生在笼子里,所以设计模式的核心就是把变化关在笼子里,不让变化漫延的到处都是,就可谓好的代码,好的设计。编译时依赖->运行时依赖。原创 2024-11-24 12:32:35 · 465 阅读 · 0 评论
-
C++设计模式-模板模式,Template Method
定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。原创 2024-11-24 12:51:17 · 411 阅读 · 0 评论 -
C++设计模式-策略模式-StrategyMethod
定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。原创 2024-11-24 13:15:10 · 625 阅读 · 0 评论 -
C++设计模式-装饰器模式
动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数)。原创 2024-11-24 14:23:42 · 448 阅读 · 0 评论 -
C++设计模式-桥模式
将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。所谓抽象和实现沿着各自纬度的变化,即“子类化”它们。Bridge模式有时候类似于多继承方案,但是多继承方案往往违背单一职责原则(即一个类只有一个变化的原因),复用性比较差。Bridge模式是比多继承方案更好的解决方法。原创 2024-11-24 14:48:19 · 675 阅读 · 0 评论 -
C++设计模式-工厂方法
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。Factory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。Factory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。Factory Method模式解决“单个对象”的需求变化。原创 2024-11-24 15:12:09 · 177 阅读 · 0 评论 -
C++设计模式-抽象工厂
提供一个接口,让该接口负责创建一系列”相关或者相互依赖的对象“,无需指定它们具体的类。//数据库访问有关的基类public:public:public://支持SQL Server//支持Oraclepublic://关联性//关联性代码中的Connection、Reader、Command为一系列的工厂,有关联关系,那么将一系列的关联关系的类组合到一起,抽象工厂。//数据库访问有关的基类。原创 2024-11-24 15:17:00 · 207 阅读 · 0 评论 -
C++设计模式-原型模式
使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。——《设计模式》GoF。原创 2024-11-24 15:27:32 · 258 阅读 · 0 评论 -
C++设计模式-Facade 门面模式
为子系统中的一组接口提供一个一致(稳定)的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。从客户程序角度来看,Façade模式简化了整个组件系统的接口,对于组件内部与外部的客户程序来说,达到了一种”解耦“的效果——内部子系统的任何变化不会影响到Façade接口的变化。Façade设计模式更注重架构的层次去看整个系统,而不是单个类的层次。Façade很多时候是一种架构设计模式。Façade设计模式并非一个集装箱,可以任意地放进任何多个对象。原创 2024-11-24 15:56:42 · 401 阅读 · 0 评论 -
C++设计模式-代理模式
为其他对象提供一种代理以控制(隔离,使用接口)对这对象的访问。Proxy并不一定要求保持接口完整的一致性,只要能够实现间接控制,有时候损及一些透明性是可以接受的。原创 2024-11-24 16:00:35 · 361 阅读 · 0 评论 -
C++设计模式-适配器模式
将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。在遗留代码复用、类库迁移等方面有用。原创 2024-11-24 16:07:56 · 372 阅读 · 0 评论 -
C++设计模式-中介者模式
用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),并且可以独立地改变它们之间的交互。将多个对象间发杂的关联关系解耦Facade模式是解耦系统间(单向)的对象关联关系;Mediator模式是解耦系统内各个对象之间(双向)的关联关系。原创 2024-11-24 16:10:50 · 577 阅读 · 0 评论 -
C++设计模式-观察者模式
定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。使用面向对象的抽象,Observer模式使得我们可以独立地改变目标与观察者,从而使二者之间的依赖关系达致松耦合。目标发送通知时,无需指定观察者,通知(可以携带通知信息作为参数)会自动传播。观察者自己决定是否需要订阅通知,目标对象对此一无所知。Observer模式是基于事件的UI框架中非常常用的设计模式,也是MVC模式的一个重要组成部分。原创 2024-11-24 13:37:40 · 218 阅读 · 0 评论 -
C++设计模式-单例模式
保证一个类仅有一个实例,并提供一个该实例的全局访问点。代码示例private:public://线程非安全版本//线程安全版本,但锁的代价过高Lock lock;//双检查锁,但由于内存读写reorder不安全Lock lock;// 这里有三步//1: 申请内存 2:在内存上调用构造函数 3:将内存地址赋给m_instance//但可能发生的顺序为132,由此变成了不安全的版本//C++ 11版本之后的跨平台实现 (volatile)原创 2024-11-24 15:40:57 · 600 阅读 · 0 评论 -
C++设计模式-享元模式
运行共享技术有效地支持大量细粒度的对象。原创 2024-11-24 15:46:50 · 522 阅读 · 0 评论 -
C++设计模式-状态模式
允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。State模式将所有与一个特定状态相关的行为都放入一个State的子对象中,在对象状态切换时,切换相应的对象;但同时维持State的接口,这样实现了具体操作与状态转换之间的解耦。转换是原子性的与Strategy模式类似。原创 2024-11-25 09:12:17 · 478 阅读 · 0 评论 -
C++设计模式-职责链
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。应用于”一个请求可能有多个接受者,但是最后真正的接受者只有一个“,这时候请求发送者与接受者有可能出现”变化脆弱“的症状,职责链解耦。有些过时。原创 2024-11-25 09:12:31 · 330 阅读 · 0 评论
分享