设计模式
阳阳杰杰
这个作者很懒,什么都没留下…
展开
-
设计模式-策略模式
策略模式主要用来使用一系列的算法,或者对一个问题不同实现方式的情况。他方便使用和扩展,统一使用一个接口。Strategy:方法基类,具体算法主要由其子类去实现StrategyOne,StratgyTwo:具体方法类,主要实现了DoSomething()方法。Client: 控制类,主要用来执行算法。下面是使用场景:小明要去北京,有坐飞机和做高铁两种选择。代码class Strategy{ virtual void DoSomething() = 0; virtual ~St原创 2021-05-10 12:45:51 · 109 阅读 · 0 评论 -
设计模式-命令模式
命令模式主要应用于发送命令,将要发送的数据封装成一个对象后再发送给接收者。当然也可以简单的使用一个链表把所有要发送的数据都存到这个链表里,这样非常简单。但是这有一个缺点,只能发送同种类型的数据,如果要新增数据,需要在链表里添加这个数据,这显然违背了“对修改关闭,对扩展开放“的重要设计原则。为了方便管理与扩展,采用命令模式去做这件事情比较合适。Invoker: 命令的发送者Command: 抽象接口,需要子类去原创 2021-05-09 23:50:22 · 58 阅读 · 0 评论 -
设计模式-适配器模式
适配器主要用来兼容其他接口,重复使用该类,类的适配器模式是把适配的类的API转换成为目标类的API。在增加新功能时,为了不改变现有的接口,可以考虑使用适配器。下面这种情况比较适用于适配器:我国电器的电压与国外的电压不一样,比如国内是220v,而美国的供电电压是120,如果直接从国外买来的电器需要经过一个变压才能在家里正常使用。我们在不改变家里面供电电压的情况下可以使用适配器模式Target: 接口基类。定义方法ConcreteTarget:具体方法类,实现了基类中定义的接口。即中国的供电电压Ad原创 2021-05-09 23:48:18 · 92 阅读 · 0 评论 -
设计模式-桥接模式
桥梁模式的目的是"将抽象化与实现化脱耦,使得二者可以独立地变化"。**当一个对象的变化有两个或者两个以上维度变化的时候比较适合用桥接模式。**比如这种情况,有不同款式和颜色的衣服,衣服有上衣,裤子和外套;颜色类别有红色黄色和黑色。该衣服对象有款式和颜色两个维度。如果一种类型一个类的话,3种款式的衣服加上3种款式的颜色一共就有9种情况。这种情况下势必会造成创建大量的类,造成代码臃肿不堪。如果才有桥接模式,最后组合成具体的对象,只需要组合衣服和颜色两种类即可,如果有新的款式和颜色添加,只需要增加对应的款式和颜色原创 2021-05-09 23:46:10 · 88 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式也是用来生产对象的,它与工厂模式不同的是,建造者强调的是分步生成对象,当一个类的构造函数参数个数较多时,而且这些参数有些是可选的参数,可以考虑使用构造者模式。Product: 最终要生成的对象。Builder:构建者的抽象基类。主要定义了Product的创建步骤,其派生类需要实现这些步骤。其会包含一个用来返回最终产品的方法Product getProduct()。ConcreteBuilder: Builder的具体是实现类。Director: 决定如何构建最终产品的算法. Constr原创 2021-05-09 23:44:07 · 81 阅读 · 0 评论 -
设计模式-模板模式
模板模式主要用来定义操作的骨架,可以在不改变原有操作顺序的情况下增加新的同类型操作的对象。或者定义一些算法骨架,采用不同的实现方法去实现,使得代码看起来统一整洁。TemplatePattern: 接口类,定义方法接口,一个算法或者操作的骨架ConcreteTwo: 一种操作的具体实现,继承了基类TemplatePattern, 实现了具体的步骤ConcreteOne: 一种操作的其他实现,继承了基类TemplatePattern, 实现了具体的步骤代码示例class TemplatePatter原创 2021-05-09 23:39:36 · 81 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式是松耦合,对象通过抽象接口像观察者发送信息。当对象发生变化时,所有的观察者都能收到对应的信息。这一点和发布-订阅模式很像,但又不同。发布-订阅是完全不耦合的,发布者和订阅者双方都不知道对方的信息,双方通过第三者消息队列进行交流信息。Observer: 观察者抽象接口,所有观察者都要继承该类。ConcreteObserver: 具体的观察者,获取观察对象的状态变化。Subject: 观察对象的抽象接口。ConcreteSubject:具体的对象,对所有观察者进行记录,等到自己的状态发生变化原创 2021-05-09 23:36:14 · 69 阅读 · 0 评论 -
设计模式-责任链模式
责任链模式使多个对象都有机会去处理请求,从而避免接收者和发送者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。责任链上的对像只要满足处理条件都可以对请求进行处理,如果不满足,则将此请求传递给链上的下一个对像。Handler: 责任链基类,定义具体接口。ConcreteHandlerOne: 责任链上的一个具体对象,可以处理请求,也可以把请求传递给下一个对象。ConcreteHandlerTwo: 责任链上的一个另一个具体对象,可以处理请求,也可以把请求传递给原创 2021-05-09 23:33:18 · 67 阅读 · 0 评论 -
设计模式-工厂模式
工厂模式用来创建对象,不会对外暴露创建逻辑,工厂模式分为简单工厂模式,工厂方法模式,抽象工厂模式简单工场模式简单工厂模式只有一个工厂,使用方法比较简单。比较适合一种产品的对象创建以及扩展。如果需要新的衍生产品只需要继承car,然后在工厂中new出来就可以了。在具体对象创建过程中可以做具体的操作,提前设置一些前提条件,以便后续访问。enum CarType{BENZ, BMW};class Car{public: virtual void ShowCarTyp原创 2021-05-09 23:30:32 · 92 阅读 · 0 评论