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

上海的网站建设公司哪家好无锡百度推广开户

上海的网站建设公司哪家好,无锡百度推广开户,app开发与网站开发有何不同,网站前端需要会什么子类替换类型码 是一种用于将类型码替换为子类。当代码使用类型码(通常是 int、string 或 enum)来表示对象的不同类别,并且这些类别的行为有所不同时,使用子类可以更加清晰地表达这些差异并减少复杂的条件判断。 一、什么时候使用…

子类替换类型码 是一种用于将类型码替换为子类。当代码使用类型码(通常是 intstringenum)来表示对象的不同类别,并且这些类别的行为有所不同时,使用子类可以更加清晰地表达这些差异并减少复杂的条件判断。

一、什么时候使用

  • 当我们发现不同的类型码对应的对象行为有所不同,并且在代码中使用 if-elseswitch-case 语句来处理不同类型的行为。
  • 当类型码背后的行为变得越来越复杂,处理逻辑变得难以维护。
  • 当每个类型码代表的类别可能拥有不同的属性或方法时。

二、优化步骤

  1. 识别类型码:找到那些使用类型码来区分对象行为的地方,通常是用来驱动 if-elseswitch-case 语句。
  2. 为每个类型创建子类:为每个类型码创建一个对应的子类,从原类继承。
  3. 将行为移植到子类:把与类型码相关的不同行为从原来的条件语句中提取出来,移动到各个子类中。
  4. 替换类型码:在对象实例化的地方,使用子类来代替类型码。

三、示例

假设我们有一个 Employee 类,使用类型码 EmployeeType 来表示全职员工和兼职员工,并根据类型码的不同计算奖金:

public class Employee
{public int EmployeeType { get; set; } // 1: Full-time, 2: Part-timepublic decimal GetBonus(){if (EmployeeType == 1){return 1000;}else if (EmployeeType == 2){return 500;}else{throw new ArgumentException("Invalid employee type.");}}
}
3.1 优化后的代码

可以为全职和兼职员工创建子类,消除类型码并让每个子类自行实现 GetBonus 方法:

public abstract class Employee
{public abstract decimal GetBonus();
}public class FullTimeEmployee : Employee
{public override decimal GetBonus(){return 1000;}
}public class PartTimeEmployee : Employee
{public override decimal GetBonus(){return 500;}
}

在客户端代码中,实例化不同的员工子类:

Employee fullTimeEmployee = new FullTimeEmployee();
Employee partTimeEmployee = new PartTimeEmployee();Console.WriteLine(fullTimeEmployee.GetBonus()); // 输出 1000
Console.WriteLine(partTimeEmployee.GetBonus()); // 输出 500

四、优化的好处

  1. 消除条件判断:不同类型的行为由各自的子类负责,不再需要通过 if-elseswitch-case 来判断类型,简化了代码结构。
  2. 增强可扩展性:新增类型时,只需创建新的子类,不需要修改现有的代码,从而遵循了开闭原则(Open/Closed Principle)。
  3. 集中职责:每个子类专门处理与它相关的行为,职责更加单一,符合单一职责原则(Single Responsibility Principle)。
  4. 更具可读性和维护性:每个子类的行为清晰且独立,代码更易于理解和维护。

五、适用场景

  • 多态场景:当不同类型的对象有不同的行为表现时,使用子类可以充分利用面向对象编程的多态性。
  • 复杂条件逻辑:当处理类型码的条件判断过于复杂或冗长时,将类型码替换为子类能够减少这些复杂的条件逻辑。
  • 未来类型扩展:如果预期会增加新的类型码,使用子类可以避免频繁修改现有代码。

六、示例扩展

如果不同员工类型除了奖金计算之外还涉及其他不同的业务逻辑,比如工资计算、休假天数等,用子类封装这些行为将使代码更加清晰。每个子类不仅仅是实现不同的 GetBonus,还可以根据需要扩展其他专属行为。

public abstract class Employee
{public abstract decimal GetBonus();public abstract int GetVacationDays();
}public class FullTimeEmployee : Employee
{public override decimal GetBonus(){return 1000;}public override int GetVacationDays(){return 20;}
}public class PartTimeEmployee : Employee
{public override decimal GetBonus(){return 500;}public override int GetVacationDays(){return 10;}
}

使用子类替代类型码能够让代码结构更加简洁、易维护,并且提升了扩展性。不同类型的对象通过子类来管理各自的行为,充分利用了面向对象编程的多态特性,从而减少复杂的条件判断和潜在错误。

http://www.tj-hxxt.cn/news/26135.html

相关文章:

  • 个人网站优秀作品谷歌 chrome 浏览器
  • 个人做民宿需要建立网站吗常德今日头条新闻
  • 商城和营销型网站建设关键词推广优化外包
  • 石家庄房地产网站建设重庆seo团队
  • wordpress 帮助 主题关键词优化举例
  • 网站企业建设优化建议
  • 天津做网站软件百度上打广告怎么收费
  • 做交易平台网站外链link
  • 我要注册公司怎么办seo综合查询站长工具关键词
  • 低价网站制作企业网络推广员要怎么做
  • 大港油田建设官方网站网购网站十大排名
  • 东台做网站的企业网站seo平台
  • 做网站用什么软件知乎最新新闻事件今天疫情
  • 网站推广大概需要多少钱百度搜索技巧
  • 找网站做襄阳seo优化排名
  • 郑州网站建站免费seo网站优化工具
  • 做微信扫码网站seo网络优化公司哪家好
  • 网站首页效果图怎么做上海牛巨微seo
  • 网站的滚屏切换是怎么做的谷歌关键词排名查询工具
  • 建设茶叶网站目的点击排名软件哪个好
  • 一些简单的代码网络搜索引擎优化
  • 2021ppt模板免费下载 素材一键关键词优化
  • 织梦可以做B2B信息发布网站吗windows7优化大师
  • 做的最好的微电影网站有哪些长春刚刚最新消息今天
  • 企业做网站上海seo搜索引擎优化工程师招聘
  • 百度网盘app下载安装兰州网站优化
  • 南昌建站黑锋网seo
  • 图片二维码制作网站新乡搜索引擎优化
  • 网站建设的概念花都网络推广seo公司
  • 石家庄网站做网站品牌策划方案怎么写