C 对比框架中不同设计模式的优点-C

首页 2024-07-11 02:20:37

工厂模式:创建对象的灵活性和解耦创建逻辑。结构模式:对象保持一致,控制创建过程。单例模式:限制实例,实现全球访问。观察者模式:松耦合、事件订阅和通知。战略模式:动态切换算法,提高灵活性。适配器模式:适配不兼容接口,促进代码重用。装饰模式:动态修改对象行为,保持可扩展性。

C 比较框架中不同设计模式的优点

引言
在代码组织和结构化方面,设计模式是一个强大的工具 C 广泛应用于框架中。了解不同设计模式的优点对于选择最适合特定任务的模式至关重要。

工厂模式

立即学习“C 免费学习笔记(深入);

  • 优点:在不修改客户代码的情况下,创建对象的灵活性和解耦性可以改变对象创建逻辑。

构造器模式

  • 优点:确保对象始终处于一致状态,并在对象创建过程中提供细粒度控制。

单例模式

  • 优点:限制实例化为需要全局访问或资源池的场景。

观察者模式

  • 优点:允许对象订阅事件并通知,以实现松耦合和代码可重用性。

策略模式

  • 优点:将算法封装为独立类,允许在运行过程中动态切换算法,提高代码的灵活性。

适配器模式

  • 优点:适应两个不兼容的接口,允许它们协同工作,实现代码重用。

装饰器模式

  • 优点:动态修改对象 behavior,通过组合而不是继承来增强功能,保持对象的可扩展性。

实战案例:战略模式

考虑一个计算销售税的系统。不同的州有不同的税率。利用战略模式,我们可以创建多个战略类别,每个战略类别对应一个税率。

struct TaxStrategy {
  virtual double calculateTax(double amount) const { return 0.0; };
};

struct NoTaxStrategy : public TaxStrategy {
  double calculateTax(double amount) const override { return 0.0; };
};

struct FlatTaxStrategy : public TaxStrategy {
  double calculateTax(double amount) const override { return 0.1 * amount; };
};

class Sale {
public:
  Sale(double amount, std::shared_ptr<TaxStrategy> tax_strategy)
      : amount_(amount), tax_strategy_(std::move(tax_strategy)) {}

  double getTotalAmount() const {
    return amount_   tax_strategy_->calculateTax(amount_);
  }

private:
  double amount_;
  std::shared_ptr<TaxStrategy> tax_strategy_;
};

int main() {
  Sale sale1(100.0, std::make_shared<NoTaxStrategy>());
  Sale sale2(100.0, std::make_shared<FlatTaxStrategy>());
  std::cout << "Sale1 total amount: " << sale1.getTotalAmount() << std::endl;
  std::cout << "Sale2 total amount: " << sale2.getTotalAmount() << std::endl;
}

在这个例子中,战略模式允许我们在不修改客户代码的情况下,轻松切换不同的税率策略。

以上就是C 在框架中,详细比较不同设计模式的优势,请关注其他相关文章!


p
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道