我的java天地

          適配器模式詳解

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

          void ?吃齋();?

          void ?打坐();?

          void ?練武();?

          void ?睡覺(jué)();?

          }
          ?
          作為適配器的抽象類(lèi)?天星?

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

          public ? void ?吃齋()? {?



          }
          ?

          public ? void ?打坐()? {?


          }
          ?

          public ? void ?睡覺(jué)()? {?


          }
          ?

          public ? void ?練武()? {?


          }
          ?

          然后是具體實(shí)現(xiàn)?魯智深?
          public ? class ?魯智深? extends ?天星? {?


          public ? void ?練武() {?


          }
          ?


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

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

          3.當(dāng)客戶(hù)類(lèi)調(diào)用適配器的方法時(shí),在適配器類(lèi)的內(nèi)部調(diào)用適配者類(lèi)的方法,這個(gè)過(guò)程對(duì)客戶(hù)類(lèi)是透明的,客戶(hù)類(lèi)并不直接訪(fǎng)問(wèn)適配者類(lèi)。因此,適配器可以使由于借口不兼容而不能交互的類(lèi)可以一起工作(work together)。

          4.當(dāng)你實(shí)現(xiàn)某個(gè)接口,你必須實(shí)現(xiàn)它所有的方法。
          如果這個(gè)接口有很多的方法,而你只需要關(guān)注其中的一個(gè),在這種情況下,適配器就是一個(gè)最佳選擇了。

          5.適配器就好像一個(gè)轉(zhuǎn)接器一樣
          有些參數(shù)可能不接受某些接口類(lèi)型
          這時(shí)使用適配器將這些接口,經(jīng)過(guò)某些處理后實(shí)現(xiàn)另一接口類(lèi)型,就可以接上去了

          二、
          /**???
          *?源角色???
          */
          ????
          public?class?Adaptee?{????
          public?int?get220v(){????
          return?220;????
          }
          ????
          }
          ???
          ??
          /**???
          *?目標(biāo)角色???
          */
          ????
          public?interface?Target?{????
          int?get110v();????
          int?get220v();????
          }
          ???
          ??
          /**???
          *?適配器角色:擴(kuò)展源角色,實(shí)現(xiàn)目標(biāo)角色,從而使得目標(biāo)角色改動(dòng)時(shí)候,不用改動(dòng)源角色,只要改動(dòng)適配器???
          */
          ????
          public?class?Adapter?extends?Adaptee?implements?Target{????
          public?int?get110v(){????
          return?110;????
          }
          ????
          }
          ???
          ??
          /**???
          *?客戶(hù)端???
          */
          ????
          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();????
          }
          ????
          }
          ??

          適配器通過(guò)擴(kuò)展源角色,同時(shí)實(shí)現(xiàn)目標(biāo)接口,從而滿(mǎn)足了同時(shí)提供220v,110v電壓的要求。

          posted on 2010-09-26 11:50 tobyxiong 閱讀(640) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(lèi)(144)

          隨筆檔案(157)

          相冊(cè)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 岗巴县| 罗源县| 信丰县| 田林县| 哈尔滨市| 平安县| 重庆市| 迁西县| 黎川县| 龙南县| 定边县| 綦江县| 德阳市| 民权县| 常德市| 南丹县| 新干县| 鄱阳县| 扎兰屯市| 北京市| 剑川县| 徐闻县| 临安市| 海原县| 荔浦县| 黑龙江省| 阿勒泰市| 郯城县| 扎鲁特旗| 荔波县| 鄂托克前旗| 获嘉县| 曲水县| 司法| 米林县| 阳曲县| 杭州市| 桃源县| 蕲春县| 新邵县| 丹棱县|