解决方案 »

  1.   

    这么多年编程,我好像没有见过那个语言的API,或者3rd的库有Socket Utility这样的接口啊 
    楼主你想多了
      

  2.   

    而且一看你的HttpUtil extends SocketUtil我就想吐血你误解了很多东西,HTTP确实是TCP实现的,但是我从来没有见过任何一个HttpConnection的类是继承自TcpConnection的。
      

  3.   

    Util : 程序中一般译为:工具的意思你写个接口,也用这个名称,不太适合;一般接口:interface,我们都会以:大写的"I"开头;如:
    public interface IDisposable
    {
        void Dispose();
    }public class A Implements IDiposable
    {
        
    }public class Main
    {
        public static void Main(String[] args)
        {
            IDisposable idObj = ....;///这里一看I开头就知道是接口;Util别以为是工具类;
        }
    }
      

  4.   

    回复 healer_kx :我是想尽可能的保留通用和可扩展性。能够给个粗略的设计或者描述?
      

  5.   

    感谢 linjf520 :有个疑问,我看有的开源产品接口就是一个名字,而"I"是用在它的实现类的名字上,好像Spring就是这样的。
      

  6.   

    在面向对象中;
    抽象这东西;
    在C++中;可能就抽象类;
    在C#、Java中,除了抽象类,还有接口;
    而接口是纯抽象的一个东西;什么东西应该抽为抽象;就是按需求,或是现实分类时,把事物的共通点抽象出来,而得来的分类名称;
    如:人:女人、男人,婴儿,老人,残疾人;等;
    纯抽象:人,interface
    后台的,什么什么人,这些都是再次抽象分类;abstract,当然,你也可以定为interface也行;
    他们都是extends 人或是implement 人这个纯抽象接口;
    而实际的实现,可能就是某个存在的人;抽象得适不适合,就是看你对事物的分类理解,或是生活的理解;
      

  7.   

    上面有打错字,重发,CSDN不可以编辑自己发的内容唉
    ====在面向对象中;
    抽象这东西;
    在C++中;可能就抽象类;
    在C#、Java中,除了抽象类,还有接口;
    而接口是纯抽象的一个东西;什么东西应该抽为抽象;就是按需求,或是现实分类时,把事物的共通点抽象出来,而得来的分类名称;
    如:人:女人、男人,婴儿,老人,残疾人;等;
    纯抽象:人,interface
    后面的,什么女、男,婴儿,老人,这些都是再次抽象分类;abstract,当然,你也可以定为interface也行;
    他们都是extends 人或是implement 人这个纯抽象接口;
    而实际的实现(没有abstract的class),可能就是某个存在的人;抽象得适不适合,就是看你对事物的分类理解,或是生活的理解;
      

  8.   

    感谢 linjf520 :个人觉得,抽象是为了隔离、方便扩展、便于理解以及提高编码速度;我现在最想搞定的是方便扩展,怎么能让它在将来尽量少改动或者不改动,只用添加和替换的方式修改添加改变功能?
      

  9.   


    按实际的需求,分类去抽象呗;
    如果到后面发现,有分类不合理,及时改掉;
    就不影响后续扩展;如果按照:
    SocketUtil可以用于普通的长连接以及HTTP请求;主要是设计HTTP的接口或者抽象类,但是一定要给普通长连接留下开发余地,尽量满足开闭原则。能不能粗略的设计一下?
      

  10.   

    public interface IConnection
    {
        ... receive(ref Byte[] bytes,...);//最好还有异步的receive
        ... send(Byte[] bytes);//最好还有异步的send
        ... connect();//最好也有:异步的connect
        ... disconect();
    }完了,就这么多;
    至于你用于Http或是其它作用的普通的长连接,再自己去实现吧;public interface IGameConnection extends IConnection
    {
        ..扩展
    }public interface IHttpConnection extends IConnection
    {
        ..扩展
    }
      

  11.   

    不太理解你表达的意思,你是说HttpConnection可以多种方式实现,不同环境用不同实现,直接继承TcpConnection写个实现没有实际使用价值?
      

  12.   

    不太理解你表达的意思,你是说HttpConnection可以多种方式实现,不同环境用不同实现,直接继承TcpConnection写个实现没有实际使用价值?我也一直在琢磨这句话,如果按照“SocketUtil可以用于普通的长连接以及HTTP请求;主要是设计HTTP的接口或者抽象类,但是一定要给普通长连接留下开发余地,尽量满足开闭原则”,好像能想到的就类似linjf520的方法
    是不是我的那个要求或者说愿望就是个错误?
      

  13.   

    是不是我的那个要求或者说愿望就是个错误? SocketUtil可以用于普通的长连接以及HTTP请求;主要是设计HTTP的接口或者抽象类,但是一定要给普通长连接留下开发余地,尽量满足开闭原则
      

  14.   

    参考LSP,然后再带人你的class,看看是否还OK~
      

  15.   

    设计的确是精巧的活,差之毫厘,失之千里。我的意思是说看起来相似的设计,可能因为一点点不同,产生的结果会相差很大,比如 有些人 喜欢用EventListener模式,但是所做的设计是错的,最终根本没有解耦,反倒耦合更大。