我的java天地

          適配器模式詳解

          和尚接口:?
          public ? interface ?和尚? {?

          void ?吃齋();?

          void ?打坐();?

          void ?練武();?

          void ?睡覺();?

          }
          ?
          作為適配器的抽象類?天星?

          public ? abstract ? class ?天星? implements ?和尚? {?

          public ? void ?吃齋()? {?



          }
          ?

          public ? void ?打坐()? {?


          }
          ?

          public ? void ?睡覺()? {?


          }
          ?

          public ? void ?練武()? {?


          }
          ?

          然后是具體實現?魯智深?
          public ? class ?魯智深? extends ?天星? {?


          public ? void ?練武() {?


          }
          ?


          1.適配器模式在這里應該是,魯智深擁有和尚的所有功能如吃齋(),打坐(),但是練武這個功能對魯智深和別的和尚不同,所以要單獨配置。

          2.使用一個已經存在的類,但如果它的接口,也就是它的方法和你的要求不相同時,就應該考慮用適配器模式
          ? 兩個類所做的事情相同或相似,但是具有不同的接口時要使用它

          3.當客戶類調用適配器的方法時,在適配器類的內部調用適配者類的方法,這個過程對客戶類是透明的,客戶類并不直接訪問適配者類。因此,適配器可以使由于借口不兼容而不能交互的類可以一起工作(work together)。

          4.當你實現某個接口,你必須實現它所有的方法。
          如果這個接口有很多的方法,而你只需要關注其中的一個,在這種情況下,適配器就是一個最佳選擇了。

          5.適配器就好像一個轉接器一樣
          有些參數可能不接受某些接口類型
          這時使用適配器將這些接口,經過某些處理后實現另一接口類型,就可以接上去了

          二、
          /**???
          *?源角色???
          */
          ????
          public?class?Adaptee?{????
          public?int?get220v(){????
          return?220;????
          }
          ????
          }
          ???
          ??
          /**???
          *?目標角色???
          */
          ????
          public?interface?Target?{????
          int?get110v();????
          int?get220v();????
          }
          ???
          ??
          /**???
          *?適配器角色:擴展源角色,實現目標角色,從而使得目標角色改動時候,不用改動源角色,只要改動適配器???
          */
          ????
          public?class?Adapter?extends?Adaptee?implements?Target{????
          public?int?get110v(){????
          return?110;????
          }
          ????
          }
          ???
          ??
          /**???
          *?客戶端???
          */
          ????
          public?class?Client?{????
          public?static?void?main(String?rags[])?{????
          new?Client().test();????
          }
          ???
          ??
          public?void?test()?{????
          Target?target?
          =?new?Adapter();????
          int?v1?=?target.get110v();????
          int?v2?=?target.get220v();????
          }
          ????
          }
          ??

          適配器通過擴展源角色,同時實現目標接口,從而滿足了同時提供220v,110v電壓的要求。

          posted on 2010-09-26 11:50 tobyxiong 閱讀(635) 評論(0)  編輯  收藏 所屬分類: java

          <2010年9月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(144)

          隨筆檔案(157)

          相冊

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 马关县| 道孚县| 胶州市| 安顺市| 互助| 周至县| 行唐县| 镇雄县| 弋阳县| 东源县| 石狮市| 东乌珠穆沁旗| 区。| 全州县| 东山县| 霍州市| 塘沽区| 丰都县| 泸水县| 寿阳县| 益阳市| 平定县| 团风县| 乌什县| 慈溪市| 江孜县| 西青区| 阿鲁科尔沁旗| 信阳市| 江川县| 乌恰县| 阿合奇县| 宿迁市| 余庆县| 威信县| 唐河县| 宜宾县| 漳平市| 仪征市| 闻喜县| 昌宁县|