设计模式
spenglu
这个作者很懒,什么都没留下…
展开
-
C++实现单例模式(懒汉、饿汉、线程安全和局部静态变量法)
概述单例模式是一个创建型设计模式,一个类只会创建一个对象。由于只有一个对象,所以不能够通过new来创建对象,因此类的构造函数得是private的由于不能够new出对象,所以类内部需要提供一个函数来获取对象,这个函数和对象都是属于类的,而不是对象,因此这个函数和唯一 的对象都得是static的,并且对象是private类型的,函数是public类型的创建单例的基本步骤:1. 构造函数私有化...原创 2019-07-13 13:32:04 · 2766 阅读 · 0 评论 -
C++实现抽象工厂模式
概述抽象工厂模式是一个创建型设计模式,它针对的是创建产品族,而不是单单一个产品优点封装了产品的创建,使得不需要知道具体是哪种产品,只需要知道是哪个工厂即可可以支持不同类型的产品,使得模式灵活性更强可以非常方便的使用一族中的不同类型的产品缺点结构过于臃肿,如果产品类型较多或产品族较多,会非常难于管理每次如果添加一组产品,那么所有的工厂类必须添加一个方法,这样违...原创 2019-07-06 15:21:42 · 1160 阅读 · 0 评论 -
C++实现工厂方法模式
概述工厂方法模式是一个创建型设计模式,通过定义一个创建对象的接口,让其子类决定实例化哪一个工厂类,一个工厂类创建一个实例,工厂模式使其创建过程延迟到子类进行。在工厂方法模式中,我们在创建对象时不会对客户端暴露逻辑,并且通过使用一个共同的接口来指向创建的对象。优点符合开闭原则不需要记住具体类名,甚至连具体参数都不用记忆实现了对象创建和使用分离系统的可扩展性也就变得非常好...原创 2019-07-06 15:03:52 · 1229 阅读 · 0 评论 -
C++实现简单工厂模式
简单工厂模式概述简单工厂模式是用单独的类来创建其它类的实例的一种创建型模式。简单工厂模式实质是工厂类根据传入的参数,来动态决定创建哪一个产品的实例优点客户端与具体实现类解耦不用考虑对象的创建过程缺点简单工厂模式,增加功能是通过修改源代码实现,不符合开闭原则这个类的职责过重,这个类发生问题,会影响很多使用这个工厂的模块使用场景工厂类负责创建的产品类比...原创 2019-07-06 14:41:22 · 1875 阅读 · 0 评论 -
C++实现模板模式
概述:模板模式是一种行为型模式,它用来定义一个算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤优点:在父类中形式化地定义一个算法,而由它的子类来实现细节的处理,在子类实现详细处理算法时并不会改变算法的执行步骤复用了父类中的代码在模板模式中,可以通过子类来覆盖父类的基本方法,不同的子类提供基本方法的不同实现,更换和...原创 2019-07-13 20:33:30 · 1043 阅读 · 0 评论 -
C++实现策略模式
概述:策略模式是一种行为型模式,它用来定义一系列的算法 ,把它们一个个封装起来,并且使它们可以互换优点:算法之间可以随便互换,扩展性好避免使用多重条件判断语句缺点:策略类会变多,系统会变大客户端必须知道所有的策略类以及它们的区别使用场景:有多重条件判断语句一个系统需要动态地从几个算法中选择一个UML类图:每一种自行车都是一种策略,用户可以...原创 2019-07-13 18:30:46 · 729 阅读 · 0 评论 -
C++实现适配器模式
概述:适配器模式是一种结构性模式,它将一个类的接口转换成客户需要的接口,使得原来由于接口不兼容而不能一起工作的类可以一起工作优点:可以让没有关联的两个类一起运行提高了类的复用性缺点:过多适配器系统会比较乱,系统的维护性变差使用场景:当想使用已经存在的类,但是这个类的接口不符合客户需求UML类图:用户拿着适配器将两孔充电器转换成三孔实例:#include...原创 2019-07-13 18:13:24 · 245 阅读 · 0 评论 -
C++实现外观模式
概述:外观模式是结构型模式,它将复杂的子类系统抽象到同一个接口进行管理,外界只需要通过该接口与子类系统进行交互,而不必直接与复杂的子类系统进行交互外观模式降低访问复杂系统的内部子系统的复杂度,简化客户端与之的接口优点:减少客户端与系统之间的耦合度简化客户端代码缺点:不符合开闭原则,扩张功能需要修改客户端和统一接口的代码使用场景:客户端与系统存在最大的依赖性...原创 2019-07-13 17:54:10 · 329 阅读 · 0 评论 -
C++实现代理模式
概述:代理模式是一种结构型模式,在某些情况下,一个对象不适合或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用优点:代理模式能够将客户与真正被调用的对象分离,降低了耦合度客户端可以通过代理与多个目标对象交互,目标对象的修改和扩展客户端并不感知,扩展性和维护性强缺点:在客户端和真正目标对象之间增加代理对象,请求速度有可能会变慢增加代理会使系...原创 2019-07-13 17:29:08 · 799 阅读 · 1 评论 -
C++实现命令模式
概述:命令模式是一种行为型模式,将一个请求封装成一个对象,从而可以用不同的请求对象进行参数化优点:降低命令请求端和接收端的耦合度新的命令只需要封装成相应的对象,就可以添加到系统中,可扩展性好缺点:命令比较多的情况下,会导致创建过多的命令类使用场景:客户端有多个请求协议的情况下,可以将协议当做命令UML类图:实例: #include <iostrea...原创 2019-07-21 12:10:14 · 421 阅读 · 0 评论