我有法官女巫方法问题从设计,干净的代码==好的做法更好。oop继承方法vs仅仅让对象在调用它的类中调用方法
更具体IngredientFromXmlReader
,PizzaReader
,DrinksFromXmlReader
内部完成所有的工作,而不DataFromFileLoader
推杆任何数据。
问号是DataFromFileLoader
类它应该从PizzaReader
,IngredientFromXmlReader
,DrinksFromXml
继承和有方法loadMenuFromFiles
这样的:
private void loadMenuFromFiles()
{
this->loadIngredientsFromXml();
this->loadPizzasFromXml();
this->loadDrinksFromXml();
}
这种方法:
- 看起来更干净对我来说,
- 不创建不需要的对象,
- 和Da taFromFileLoader不会看起来更拥挤,然后是第二种方法,因为方法是在父类中实现的。
或者只是做了我该怎么做是正确的认识,它们都必须实现公共方法loadXml()
,这是AbstractReaderFromXml
虚方法。然后我创建调用方法的对象。
private void loadMenuFromFiles()
{
IngredientFromXmlReader ingreRead;
ingreRead.loadXml();
PizzaReader pizzaRead;
pizzaRead.loadXml();
DrinksFromXmlReader drinksRead;
drinksRead.loadXml();
}
我为什么选择这样的:
- 它更坚持单一职责原则,职责更加分离,有什么优势,
- 我不给一个机会来调用这个方法在不需要的地方,因为我需要这样做,
第三个选项是使静态这三个类的所有内部方法,但我不喜欢它非常。在我看来,应用程序的重量要大得多,我尽量避免它。确定这是选项。
什么方法更好?
的最后一件事,如果这个问题适合计算器或者它应该
放在
DR; TL;你没听说C++应该避免[钻石继承](https://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem)。 – 101010
@ 101010是的我听说过,但是如果我想从这3个类继承,我不会在类AbstractReaderFromXml中创建任何虚拟方法,所以它看起来像在类IngredientFromXmlReader中 - 方法loadIngredietnsFromXml代替这个虚拟构造loadXml – MyWay
@101010 Thx表示良好的论点,第二个选项比第一个更好。 DR和TL的含义是什么? – MyWay