常用的問題:比如手機、Mp3、電腦等的充電器,轉換接頭都相當於一個適配器。類似這種資料轉換的馬上想到適配器模式
package MyAdapter;/** *@Description: 適配器模式 *@author Potter *@date 2012-8-14 下午11:17:12 *@version V1.0 */public class App {public static void main(String[] args) {Adapter adapter=new Adapter();adapter.setPower(new Power(220));Device phone=new Phone();phone.ac(adapter);}}
電源類:
package MyAdapter;/** *@Description: 電源 *@author Potter *@date 2012-8-14 下午11:20:35 *@version V1.0 */public class Power {int v;//電壓public Power(int v){this.v=v;}}
適配器類:
package MyAdapter;/** *@Description: *@author Potter *@date 2012-8-14 下午11:18:10 *@version V1.0 */public class Adapter {Power power;/**轉變成合適的電源給裝置充電**/public int convert(Device device){if(device instanceof Mp3){power.v=20;}else if(device instanceof Phone){power.v=25;}return power.v;}public Power getPower() {return power;}public void setPower(Power power) {this.power = power;}}
裝置抽象類別:
package MyAdapter;/** *@Description: *@author Potter *@date 2012-8-15 下午09:59:58 *@version V1.0 */public abstract class Device {/**充電 * @param p 電壓 */public abstract void ac(Adapter adapter);}
具體類MP3:
package MyAdapter;/** *@Description: *@author Potter *@date 2012-8-14 下午11:18:39 *@version V1.0 */public class Mp3 extends Device{@Overridepublic void ac(Adapter adapter) {System.out.println("map3 充電,電壓為"+adapter.convert(this)+"V");}}
具體類Phone:
package MyAdapter;/** *@Description: *@author Potter *@date 2012-8-14 下午11:18:29 *@version V1.0 */public class Phone extends Device{@Overridepublic void ac(Adapter adapter) {System.out.println("手機充電,電壓為"+adapter.convert(this)+"V");}}
列印結果:
手機充電,電壓為25V
這是我對適配器模式的理解,大家如果覺得小弟哪裡講得不對的地方,還請指標。謝謝