如何解决违反OO概念?
通过使用引用子类类型的开关案例的方法创建基类。
下面的代码是否违反了OO原理,如果是这样的话?
public abstract class BaseClass
{
public BaseClass Method()
{
switch (this)
{
case DerivedClass1 s:
return new DerivedClass1();
case DerivedClass2 c:
return new DerivedClass2();
case DerivedClass3 r:
return new DerivedClass3();
default:
return null;
}
}
}
解决方法
您没有利用open-closed principle而违反了SOLID的polymorphism。为每个派生类设置基类方法virtual
和override
:
public abstract class BaseClass
{
public virtual BaseClass Method()
{
return null;
}
}
public class DerivedClass1 : BaseClass
{
public override BaseClass Method()
{
return new DerivedClass1();
}
}
...等等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。