当前位置: 首页 > news >正文

西宁市建设网站公司电话优化排名推广技术网站

西宁市建设网站公司电话,优化排名推广技术网站,中国摄影网官网首页,点赞排行 wordpress 主题Replace Conditional with Polymorphism 要将 条件语句(如 if 或 switch)替换为 多态,你需要将代码中的条件逻辑提取到不同的类中,并利用面向对象的多态性来动态选择行为。这样做的好处是可以让代码更加清晰、易扩展,…

Replace Conditional with Polymorphism

要将 条件语句(如 if 或 switch)替换为 多态,你需要将代码中的条件逻辑提取到不同的类中,并利用面向对象的多态性来动态选择行为。这样做的好处是可以让代码更加清晰、易扩展,且符合开放封闭原则(即对扩展开放,对修改封闭)。

举个例子:
假设你有如下代码,其中有很多条件语句来根据不同的类型执行不同的行为:

class Shape {
public:virtual double area() const = 0;
};class Circle : public Shape {
public:double radius;Circle(double r) : radius(r) {}double area() const override {return 3.14 * radius * radius;}
};class Square : public Shape {
public:double side;Square(double s) : side(s) {}double area() const override {return side * side;}
};class AreaCalculator {
public:double calculateArea(Shape* shape) {if (dynamic_cast<Circle*>(shape)) {Circle* circle = dynamic_cast<Circle*>(shape);return 3.14 * circle->radius * circle->radius;} else if (dynamic_cast<Square*>(shape)) {Square* square = dynamic_cast<Square*>(shape);return square->side * square->side;}return 0.0;}
};

在这个例子中,AreaCalculator 使用了 if 语句来判断不同形状并计算它们的面积。这个代码显得非常不灵活,假如未来我们需要支持更多的形状类型,就必须修改 AreaCalculator 类。

使用多态来替换条件语句
我们可以通过将每个形状的面积计算逻辑放入各自的 area 方法中,来利用多态性消除条件判断。

首先,定义一个 Shape 基类,并让每个具体的形状类实现自己的 area() 方法:

class Shape {
public:virtual double area() const = 0;  // 纯虚函数virtual ~Shape() = default;        // 虚析构函数
};class Circle : public Shape {
public:double radius;Circle(double r) : radius(r) {}double area() const override {return 3.14 * radius * radius;}
};class Square : public Shape {
public:double side;Square(double s) : side(s) {}double area() const override {return side * side;}
};

接下来,在 AreaCalculator 中,直接利用多态来调用每个具体形状的 area() 方法,而不需要使用条件语句:

class AreaCalculator {
public:double calculateArea(Shape* shape) {return shape->area();  // 利用多态直接调用正确的 area() 方法}
};

使用示例:

int main() {Circle circle(5);Square square(4);AreaCalculator calculator;std::cout << "Circle area: " << calculator.calculateArea(&circle) << std::endl;  // 3.14 * 5 * 5std::cout << "Square area: " << calculator.calculateArea(&square) << std::endl;  // 4 * 4
}

优点:

  1. 消除了条件语句:通过多态,AreaCalculator 类不再需要判断具体的形状类型,而是通过虚函数机制动态调用正确的 area()
    方法。
  2. 易于扩展:如果你将来添加更多形状(如 Triangle),只需继承 Shape 并实现 area() 方法,不需要修改
    AreaCalculator 类。
  3. 更符合面向对象原则:多态性使得行为的改变更加灵活,并且将每个形状的逻辑封装到自己的类中,符合单一职责原则(SRP)。

总结:

将条件语句替换为多态,关键在于利用类和继承的机制,确保每个具体类型的行为都在它自己类的成员函数中实现。通过多态性,系统可以根据对象的实际类型动态地选择正确的行为,而无需显式地判断类型。这样可以使代码更易于扩展和维护。

http://www.dtcms.com/a/425773.html

相关文章:

  • 哈尔滨市住房和城乡建设局网站松原做网站的公司
  • 建设银行信用卡网站下载wordpress替换dede
  • 医院网站建设的意义公司文化墙图片大全
  • 阿里云网站建设认证答案网站开源代码模版
  • 网上怎么做网站赚钱制作网站什么制作
  • 虎丘做网站价格我是一条龙怎么停更了
  • 网站备案号密码珠海市官网网站建设平台
  • 常熟做网站需要做网站的企业资源
  • 手怎么搭建网站怎么爬虫做网站
  • 手机怎么自己做网站软件开发文档通用要求
  • 网站绑定多个域名物业建设网站
  • 济南建站联系企汇优网站对接微信接口
  • 网站寄生虫怎么做wordpress中文安装教程视频教程
  • 建设部网站官网办事大厅网站流量分析系统
  • 浏览器正能量网站免费网站推广应该坚持( )策略。
  • 制作百度移动网站钟落潭有没有做网站的
  • 2015年网站设计app开发公司哪家好 上海
  • 芦苞建网站公司做外包的网站
  • 万网 安装wordpress百度快照优化排名
  • 河南省住房城乡和建设厅网站扬州国土资源局网站开发区分局
  • 通化公司做网站自己的网站建设
  • 信阳网站建设策划方案制作网页的网站有哪些
  • 网站建设背景上传自己做的网站
  • 手机版网站怎么做的做珠宝商城网站
  • 购物网站开发参考文献购物网站价格
  • 长春网站建设方案咨询设计网站哪个
  • 商城微网站建设多少钱wordpress小工具开发
  • 福建网站建设培训班wordpress 红色主题
  • 视觉设计网站推荐购物网站的建设的好处
  • 哈尔滨服务最好的网站优化公司投票小程序制作