接口隔离原则(ISP)——接口一般用在类的规范上,也有用来隔离的功能,最近在反编译一个高手的代码
跟踪无比的困难,一个接口可能延续了三五层的类,还没有最终的实例几十个接口这么弄,就是一个庞大无比的网络想分析出来整个框架的内容,烦累无比


今天探讨的主题就是:
你喜欢用接口来做什么,怎么去进行接口的传递和规范(最好有代码,让初学者也有所借鉴)


解决方案 »

  1.   

    接口隔离原则(ISP)讲的是:使用多个专门的接口比使用单个接口要好的多。人们所说的接口往往指的是两种不同的东西:一种是JAVA中有严格定义的Interface结构,比如java.lang.Runnable就是一个java接口;另一种就是一个类型所具有的方法特征的集合,也称作“接口”,但这仅是一种逻辑上的抽象。一个接口相当于剧本中的一个角色,而此角色有哪个演员来扮演相当于接口的实现。因此,一个接口应当简单地代表一个角色,而不是多个角色。如果系统涉及到多个角色的话,那么每一个角色都应该由一个特定的接口代表。  如果将接口理解成狭义的java 接口,这样一来,ISP讲的就是为同一个角色提供宽窄不一的接口,以对付不同的客户端。这种办法在服务行业中叫做定制服务。也就是说我们只提供给客户端需要的方法。一个设计师往往想节省接口的数目而讲看上去类似的接口合并,实际上这是一种错误的做法,提供给客户多余的方法,使接口变得臃肿,造成接口污染。   定制化服务设计原则的好处在于:这样作很整洁;有利于系统的维护,向客户端提供public接口是一种承诺,我们应尽量减少这种承诺。将接口隔离出来,有利于降低成本。
      

  2.   


    那个高手是在写框架吧我觉得面向接口编程就是可以实现后期绑定,使模块间耦合度降低,但是耦合度太低,也会造成性能上的降低以及难以阅读的问题,所以应该适可而止,有个度才好。
    前段时间做了个通用查询的东东,里面可以支持多种数据库,我是这样实现的
    (1)有个IDataAccess接口,它的实现有SqlServerDataAccess,OracleDataAccess,OleDbDataAccess.....
    (2)然后有个配置文件定义了查询语句(XML描述),其中把数据访问的类路径也填进去,也就是如果这个查询是MSSQL数据库的就用SqlServerDataAccess,是Oralce就用OracleDataAccess
    (3)这样在构造查询界面的窗体中,我只要new一个IDataAccess,而具体实例化成哪个类则利用反射来获取,这样如果我再实现一个ODBC的DataAccess类,只要修改配置文件就可以了,查询界面的窗体代码是不需要修改的谈的就这么多,代码可能太多,不便贴出
      

  3.   

    嗯哈,可以看http://www.idesign.net老外们老早就在总结这些东东了