holyya.com
2025-09-05 03:24:13 Friday
登录
文章检索 我的文章 写文章
C++23种设计模式:简单易懂的介绍和实例分析
2023-07-06 16:22:03 深夜i     --     --
C++ 设计模式 简单易懂 介绍 实例分析

C++是一种广泛使用的编程语言,用途涵盖了许多领域,例如游戏开发、操作系统、应用程序开发等。当我们写程序时,我们常常会使用一些高级的技术来提高代码的可维护性和可扩展性。其中一种非常重要的技术就是设计模式。

设计模式是一种解决特定软件设计问题的通用解决方案。C++支持23种设计模式,这些模式涵盖了软件设计中的各种场景,可以帮助程序员编写高质量的代码。以下是一些常见的设计模式及其简单的介绍和实例分析。

1. 工厂模式

工厂模式是一种对象创建模式,它允许我们在不暴露对象创建逻辑的情况下创建对象。它通过定义一个公共的接口来创建具有相同功能的对象。例如:


class Product {

public:

  virtual void operation() = 0;

};

class ConcreteProduct : public Product {

public:

  void operation()

    std::cout << "ConcreteProduct operation." << std::endl;

  

};

class Creator {

public:

  virtual Product* factoryMethod() = 0;

  void operation() {

    Product* product = factoryMethod();

    product->operation();

  }

};

class ConcreteCreator : public Creator {

public:

  Product* factoryMethod() {

    return new ConcreteProduct();

  }

};

在上述代码中,工厂模式通过定义接口和创建对象的方法实现了对象的创建,使我们可以轻松地创建具有相同功能的对象。

2. 单例模式

单例模式是一种保证在一个应用程序中只有一个实例的模式。它是一种创建型模式,它通过一个私有构造函数和一个静态实例变量来确保一个类只能有一个实例。例如:


class Singleton {

public:

  static Singleton* getInstance() {

    if (m_instance == nullptr) {

      m_instance = new Singleton();

    }

    return m_instance;

  }

  void operation()

    std::cout << "Singleton operation." << std::endl;

  

private:

  Singleton() {}

  static Singleton* m_instance;

};

Singleton* Singleton::m_instance = nullptr;

在上述代码中,我们通过getInstance()方法获取单例对象,确保只有一个实例。

3. 策略模式

策略模式是一种行为模式,它允许我们在运行时动态切换算法以适应不同的情况。它定义算法族,将它们分别封装,并使它们之间可以互相替换。例如:


class Strategy {

public:

  virtual void execute() = 0;

};

class ConcreteStrategy1 : public Strategy {

public:

  void execute()

    std::cout << "ConcreteStrategy1 execute." << std::endl;

  

};

class ConcreteStrategy2 : public Strategy {

public:

  void execute()

    std::cout << "ConcreteStrategy2 execute." << std::endl;

  

};

class Context {

public:

  void setStrategy(Strategy* strategy)

    m_strategy = strategy;

  

  void executeStrategy() {

    if (m_strategy) {

      m_strategy->execute();

    }

  }

private:

  Strategy* m_strategy;

};

在上述代码中,Context对象依赖于Strategy对象,可以动态地切换不同的策略。

总结

以上是3个常见的设计模式的简单介绍和实例分析。在实际项目中,不同的设计模式可以用于解决不同的问题,可以大大提高代码的可维护性和可扩展性。当我们需要增加新的功能或者修改现有的功能时,设计模式能够帮助我们更好地管理代码逻辑。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复