日期:2014-05-18  浏览次数:20857 次

【关于多个类和接口问题】如何设计呢?没有接口经验。
一个项目有这样的需求:
一个表登记了很多(200以上)新闻网站的 网址和网站编码(唯一),用户从中查询选择一个网站,
实现即时查看该网站新闻的功能。

方案一、利用接口,不同类实现:
定义接口INews,其中定义方法: getNews(参数1,参数2,参数3),
然后定义各个网站的源文件解析类(用网站编码命名类名)去实现getNews(参数1,参数2,参数3),
主程序根据用户所选择网站 动态实例化指定网站的类,然后调用getNews。

这样的设计原因:
1、各个网站的解析类将由不同程序员去实现,定义了接口目的是实现了约束;
2、可以根据类名实现动态调用:
INews inws = (INews)System.Activator.CreateInstance(Type.GetType(网站编码),false)

方案二、把所有网站的源文件解析放在一个类中,用网站编码命名方法名,然后动态调用方法;

不知道哪种方案会好些,或者说有更好的方案。请高人指点!


------解决方案--------------------
探讨
方案一、利用接口,不同类实现:
定义接口INews,其中定义方法: getNews(参数1,参数2,参数3),
然后定义各个网站的源文件解析类(用网站编码命名类名)去实现getNews(参数1,参数2,参数3),
主程序根据用户所选择网站 动态实例化指定网站的类,然后调用getNews。

------解决方案--------------------
我觉得应该先考虑读取的问题,你这个只说了解析。
而且SP1234说的没错,你的设计太过于抽象,过高程度的抽象就没多大意义了,相当于没有解决问题。
是否动态调用那是实现的问题,在设计的阶段这个考虑是没有多大意义。
建议先从这200个网站中找到其相似处和不同处,然后再考虑变化性,最终确定明确的方案。
------解决方案--------------------
按照你的思路,好像是每个网站都有一个程序员负责,网站的解析类由他负责。
网站数量是动态变化的,增加或减少数量,你的程序都要适应吧
这样,你的2种方法都不行

第一种,好多程序员写自己的网站解析类,支持你的接口,那么这些新增加的类,你怎么办?
第二种,设计一个类,增加网站数目,你的类就要增加的新方法,你怎么增加?

要考虑新的思路,从可扩展性角度考虑

若不考虑扩展的话,例如只有200个网站,那么第一种好些,主程序里统一处理

本人愚见,等待更多人的见解