编程思想-解耦

来源:互联网 发布:淘宝三大苹果店 编辑:程序博客网 时间:2024/06/04 19:04


解耦方法有但不限有如下几种:(百度解释前三种)
(a)采用现有设计模式实现解耦,如事件驱动模式、观察者模式责任链模式等都可以达到解耦的目的;
(b)采用面向接口的方式编程,而不是用直接的类型引用,除非在最小内聚单元内部。但使用该方法解耦需要注意不要滥用接口。
(c)高内聚,往往会带来一定程度的低耦合度。高内聚决定了内部自行依赖,对外只提供必须的接口或消息对象,那么由此即可达成较低的耦合度。
  ( d )注解,以注解的方式,将方法,属性注入依赖,实现高扩展性。

解耦总的一句话来说,减少依赖,抽象业务和逻辑,让各个功能实现独立

比如:
     class A{
        public void do();
          }
     class B{
      public void do();
     }
      class C{
        private A  a;
        void showA(A a){
            a.do();
          }
        }
 C依赖于A,又依赖于B,耦合度高。

解耦如下:
   interface I{
     void do();

 }

   clas A implements I{
      public void do();
}

   clas B implements I{
     public void do();
}

 class C{
        private I  i;
        void show(I i){
            i.do();
          }
        }
当然这只是其中一种情况。低耦合总的规则就是:
1、上层模块不依赖于底层模块
2、控制反转,比如:去餐馆吃饭,付钱让厨师做,这是正常的控制流程(相当于客户端发交易到服务端);
现在改为去吃自助烧烤的方式,自己选择烧烤哪些肉类,大龙虾,肉串,鸡腿等,这就是控制权在自己手上(相当于客户端控制服务端)。
3.注解下一篇再单独总结。


知乎解答:
http://www.zhihu.com/question/20821697


0 0