[英]oop inheritance of method vs making object only to call method in class which invoke it
我判断巫婆的方法存在问题,从设计,清理代码==好的做法来看比较好。
我在程序启动时从文件中加载了一些数据,并且类的结构如下所示:
更具体地说, IngredientFromXmlReader
, PizzaReader
, DrinksFromXmlReader
在内部完成所有工作,而无需从DataFromFileLoader
任何数据。
问号是DataFromFileLoader
类的什么,它应该从PizzaReader
, IngredientFromXmlReader
, DrinksFromXml
继承,并具有如下方法loadMenuFromFiles
:
private void loadMenuFromFiles()
{
this->loadIngredientsFromXml();
this->loadPizzasFromXml();
this->loadDrinksFromXml();
}
这种方法:
或者只是按照我正确的方式loadXml()
,他们都必须实现公共方法loadXml()
,这是AbstractReaderFromXml
虚拟方法。 然后我创建调用方法的对象。
private void loadMenuFromFiles()
{
IngredientFromXmlReader ingreRead;
ingreRead.loadXml();
PizzaReader pizzaRead;
pizzaRead.loadXml();
DrinksFromXmlReader drinksRead;
drinksRead.loadXml();
}
我为什么选择这个:
第三种选择是使这3个类的所有内部方法都静态化,但是我不太喜欢。 在我看来,它的申请量大得多,因此我尽量避免使用它。 当然,这是选项。
哪种方法更好?
最后一件事,如果这个问题适合stackoverflow或应该放
在我看来,这个问题的问题描述不清楚。 但是在这种情况下,我强烈建议您不要继承钻石。
继承说明了IS-A连接。 在我PizzaReader
实际上并不像FileOpener
。 PizzaReader
利用FileOpener
打开文件,对吗? 这意味着这是用composition代替继承的一个很好的例子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.