C++ 设计模式(可复用面向对象软件的基础)学习笔记——第四讲 Strategy策略模式

对于设计模式初学者来说,GoF的这本设计模式(可复用面向对象软件的基础)是有些难理解的,因此我先看了视频教程,附上教程链接网址https://www.bilibili.com/video/av52251106/?p=4。

       以下是我的学习笔记整理,分享给有需要的朋友,记录的比较简单,如有不理解的地方可以看原教程视频链接,或者留言给我,本小菜和你一起探讨。

1.动机:在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。

2.模式定义:

定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。

                                                                                                                                                            ——《设计模式》GoF

3.要点总结

(1)Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间切换。

(2)Strategy模式提供了用条件判断语句以外的另一种选择,消除条件判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需要Strategy模式。

(3)如果Strategy对象没有实例变量,那么各个上下文可以共享一个Strategy对象,从而节省对象开销。

 

4.Strategy策略模式代码实例

5.最简伪代码

class A{

public:

       virtual fun()=0;

       virtual ~A(){}

};

class Aa : public A{

public:

       virtual fun(){

       实现a功能。

       }

};

class Ab : public A{

public:

       virtual fun(){

       实现b功能。

       }

};

class C{

        A *a;

public:

       C(){

             this->a=aFactory->createA();//借助于工厂类模式,创建Aa或Ab类的指针对象

       }

      ~C(){delete a;}

public:     

      funC(){

              a->fun();

      }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 设计模式是一种在软件设计中可以重复使用的面向对象设计方法。它为解决软件设计中常见的问题提供了一种结构化的、经过验证的解决方案。每个设计模式都是一种经验总结,通过它可以在设计阶段更加高效地解决问题,提高软件的可维护性和可扩展性。 其中,C 20设计模式是一种设计模式的分类,包含了20种常见的设计模式,这些模式被广泛应用于软件设计领域。C 20设计模式具有不同的特点和使用场景,可以根据具体的问题选择合适的设计模式进行应用。 例如,单例模式是C 20设计模式中的一种,它用于保证一个类只存在一个实例,并提供一个全局访问点。在需要保证系统中只有一个实例对象时,可以使用单例模式来实现。工厂模式是另一种常见的设计模式,它用于隐藏对象的创建细节,并提供一个统一的对象创建接口。在需要根据不同的条件创建不同类型的对象时,可以使用工厂模式来实现。 C 20设计模式还包括适配器模式、观察者模式策略模式等等。每个设计模式都有其独特的使用场景和解决方案,根据具体的需求选择合适的设计模式能够提高软件的可维护性和可扩展性。 总之,C 20设计模式是一种可复用面向对象设计方法,通过它可以解决软件设计中的常见问题。选用合适的设计模式可以提高软件设计质量,降低代码的复杂度,并且使得软件更易于维护和扩展。 ### 回答2: 设计模式是一种可复用面向对象设计方法,它提供了在软件开发过程中常见问题的解决方案。设计模式可以提高代码的重用性、可读性和可维护性,使得软件系统更加灵活和可扩展。 C 20设计模式是指在 C++20 标准中引入的新的设计模式。这些设计模式包括但不限于观察者模式、工厂模式、单例模式和装饰器模式等。 观察者模式是一种对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。 工厂模式是一种创建对象的方法,它将对象的创建过程封装在一个工厂类中,客户端只需要通过工厂类来创建对象,而不需要了解具体的实现细节。 单例模式保证一个类只有一个实例,并提供一个全局的访问点。这种模式常用于管理系统资源和全局配置。 装饰器模式是一种动态地给对象添加新功能的方法,它通过创建一个包装类来包装原始对象,然后在包装类中添加额外的功能。这样,可以在不改变原始对象的情况下,动态地给它添加新的行为。 C 20设计模式的引入,使得在 C++20 中使用设计模式更加方便和灵活。它们可以通过新的语法和特性来实现,从而减少开发者的工作量和代码的复杂性。 总之,设计模式是一种可复用面向对象设计方法,它能够提高代码的可扩展性、可读性和可维护性。C 20设计模式是在 C++20 标准中引入的新的设计模式,使得在 C++20 中使用设计模式更加方便和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值