java學(xué)習(xí)

          java學(xué)習(xí)

           

          設(shè)計(jì)模式之中介者模式

          Java深入到一定程度,就不可避免的碰到設(shè)計(jì)模式這一概念,了解設(shè)計(jì)模式,將使自己對(duì)java中的接口或抽象類應(yīng)用有更深的理解.設(shè)計(jì)模式在java的 中型系統(tǒng)中應(yīng)用廣泛,遵循一定的編程模式,才能使自己的代碼便于理解,易于交流,Mediator(中介者模式)模式是比較常用的一個(gè)模式.
           

            Mediator中介者模式,當(dāng)多個(gè)對(duì)象彼此間都有聯(lián)系的時(shí)候,我們就可以應(yīng)用Mediator將對(duì)象間的多對(duì)多關(guān)系轉(zhuǎn)換為一對(duì)多的關(guān)系,這樣做,可以使各個(gè)對(duì)象間的耦合松散。統(tǒng)一管理對(duì)象間的交互。但也可能使得Mediator對(duì)象成為一個(gè)系統(tǒng)中的龐然大物,難以維護(hù)
             使用場(chǎng)景:集中負(fù)責(zé)維護(hù)對(duì)象模型的關(guān)系完整性 以及需要 封裝對(duì)象間交互方式的時(shí)候.
             其實(shí)MVC中的controller就是一種Mediator,是UI層 和后端應(yīng)用sevice層間的中介者。中介者將交互的復(fù)雜性變?yōu)橹薪檎叩膹?fù)雜性

          例子如下:
          業(yè)務(wù)類的接口:
          public interface Colleague {
          void action();
          }
          業(yè)務(wù)類的2個(gè)實(shí)現(xiàn)類:
          public class ColleagueA implements Colleague{

              @Override
              public void action() {
                   System.out.println("普通員工努力工作aaaaaaa");        
              }
          }
          public class ColleagueB implements Colleague{

              @Override
              public void action() {
                   System.out.println("前臺(tái)注意了bbbb");        
              }
          }
          中介者接口:
          public interface Mediator {
          void notice(String content);
          }

          public class ConcreteMediator implements Mediator{
               private ColleagueA ca;
                  
                  private ColleagueB cb;
                  
                  public ConcreteMediator() {
                      ca = new ColleagueA();
                      cb = new ColleagueB();
                  }
                  
                  public void notice(String content) {
                      if (content.equals("boss")) {
                          //老板來了, 通知員工A
                          ca.action();
                      }
                      if (content.equals("client")) {
                          //客戶來了, 通知前臺(tái)B
                          cb.action();
                      }
                  }

          }

          測(cè)試類:
          public class Test {
               public static void main(String[] args) {
                      Mediator med = new ConcreteMediator();
                      //老板來了
                      med.notice("boss");
                      
                      //客戶來了
                      med.notice("client");
                  }

          }
          當(dāng)客戶端傳過來的字符串不一樣時(shí),中介者類根據(jù)字符串實(shí)現(xiàn)不同的業(yè)務(wù)類的對(duì)象,處理數(shù)據(jù)。

          posted on 2013-05-27 17:02 楊軍威 閱讀(365) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 林州市| 万年县| 许昌县| 麦盖提县| 大名县| 韶关市| 苍山县| 观塘区| 九龙城区| 斗六市| 平舆县| 兴文县| 山丹县| 汾阳市| 五寨县| 铜山县| 琼海市| 普宁市| 周口市| 商河县| 莱芜市| 凤台县| 北宁市| 台东县| 芒康县| 曲阜市| 阜新市| 崇礼县| 治多县| 镇平县| 阳城县| 遵义市| 克东县| 皋兰县| 内乡县| 洛扎县| 昌平区| 永泰县| 米易县| 澄城县| 江城|