csharp进阶练习题:将switch语句重构为Visitor模式【难度:2级】:
使命
这个kata的目的是重构switch语句并用访问者模式替换它.
问题
虽然switch语句可以快速执行并且是一个简单的构造,但是随着它们的增长,它们可能变得难以操作并且成为维护的噩梦.
他们也不鼓励"开放封闭"原则.考虑到这一点,我们将从代码中删除switch语句并将其替换为访问者模式.
解决方案
您的解决方案将使用访问者模式方法替换GetStatusDescription()
方法中的switch case
语句.
我们将我们的状态基于以下基类,它将接受一个名为IVisitor
的接口.
公共抽象类状态
{
public abstract string Accept(IVisitor visitor);
}
您将需要创建此接口以及您自己的IVisitor
的具体实现.在现实世界中,Visitor可能会被注入到"Kata"类中,但是对于这个kata,只需在构造Kata
类时创建具体实例.
公共课习题
{
private readonly IVisitor _visitor = new MyVisitor();
注意:
是的,测试将通过什么都不做,并留下switch ... case
结构存在,但是这个kata的想法是让你深入了解从代码中删除switch
语句并寻找替代结构,在此案例,访客模式.
请享用.
这个kata与"重构一个字典的开关语句"和"[使用多态重构一个switch语句]"(https ?/www.codewars.com/kata/58a300b01e6f21b5dd001474)
编程目标:
public enum Status
{
Default = 0,
New =