我一直在制作一个从互联网上下载有关电影的信息的程序。我有一个基类Title
,代表所有标题。 Movie
,Serie
和Episode
都是从该类继承的。
要将它们保存到数据库,我有2项服务,MovieService
和SerieService
。他们反过来调用存储库,但这在这里并不重要。
我有一个方法Save(Title title)
,我对此并不满意。我检查标题的类型,然后调用正确的服务。我想也许这样写:
ITitleService service = title.GetService();
title.GetSavedBy(service);
所以我在Title
上有一个抽象方法返回一个ITitleSaver
,它将为实例返回正确的服务。要做到这一点,服务必须实现ITitleSaver
我的问题是我应该如何实施ITitleSaver
?如果我接受Title
,我必须在调用正确的重载之前将其强制转换为正确的类型。这将导致不得不再次处理铸造。
处理此问题的最佳方法是什么?我想在相应的类中保存逻辑。
答案 0 :(得分:0)
我不明白GetService的目的。您只调用该方法将其结果传递给GetSavedBy方法?这是我的建议:
定义具体方法保存在Title类上,其实现为:
this.GetSavedBy(节电器);
在每个Concrete类中,要么创建所需的保护程序,要么使用一些依赖注入工具在运行时注入正确的Saver。
瞧!这可以很好地解决你的问题。