假设我们有一个类结构,其中代码分为两部分让我们说计算机科学和商业,现在这也进一步划分国家,比如印度(cs或MBA)和美国(cs或MBA) 。 现在让我们考虑一下我创建像
这样的类的场景1)教育班(家长班)
2)MBA课程扩展了教育课程
3)BS(cs)课程扩展了教育课程
现在就国家而言,我也开设了课程
4)INDIA_BS类扩展了BS(cs)类
5)INDIA_MBA课程扩展MBA课程
6)US_BS类扩展了BS(cs)类
7)US_MBA课程扩展MBA课程
现在让我们说我编写的代码,其中国家在类别方法中设置,层次最低(即国家类INDIA_BS,INDIA_MBA,US_BS,US_MBA)
但逻辑是相似的。我通过国家名称并设置。
所以我的问题是 1)将公共逻辑放在父类中(如果我这样做)并从层次结构中最低的子类调用该方法是明智的。
2)如果这是违反OOPS原则的错误
3)如果是,那么它是否违反了SOLID原则?
4)如果我将公共代码放在父类中,它是否会降低子类的一致性。
请尽可能详细说明。 感谢
答案 0 :(得分:2)
你的班级图:
我看到x违规行为:
所以,我建议你使用抽象工厂模式。 代码:
class Test
{
static void Main(string[] args)
{
IEducationFactory india = new IndianEducation();
IEducationFactory newYork = new USEducation();
IDiplom d1 = india.Create_BSC();
IDiplom d2 = newYork.Create_MBA();
}
}
public interface IDiplom
{
}
public interface IEducationFactory
{
IDiplom Create_MBA();
IDiplom Create_BSC();
}
public class IndianEducation : IEducationFactory
{
public IDiplom Create_MBA()
{
throw new NotImplementedException();
}
public IDiplom Create_BSC()
{
throw new NotImplementedException();
}
}
public class USEducation : IEducationFactory
{
public IDiplom Create_MBA()
{
throw new NotImplementedException();
}
public IDiplom Create_BSC()
{
throw new NotImplementedException();
}
}
而且,您的类图如下所示: