将一个类的接口转换成客户想要的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
适配器一共包括3种角色
1、目标:目标是一个接口,该接口是客户想使用的接口
2、被适配者:被适配者是一个已存在的接口或抽象类,这个接口或抽象类需要适配
3、适配器:适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配者的指着是对被适配者接口与目标进行适配
- package org.zhy.adapter;
-
-
-
-
-
-
- public interface ThreeElectricOutlet {
-
- public abstract void connectElectricCurrent();
- }
- package org.zhy.adapter;
-
-
-
-
-
- public class TreeElecricAdapter implements ThreeElectricOutlet {
-
- TwoElectricOutlet outlet;
- public TreeElecricAdapter(TwoElectricOutlet teo) {
- this.outlet=teo;
- }
-
- @Override
- public void connectElectricCurrent() {
- outlet.connectElectricCurrent();
- }
-
- }
- package org.zhy.adapter;
-
-
-
-
-
-
- public interface TwoElectricOutlet {
-
-
- public abstract void connectElectricCurrent();
- }
- package org.zhy.adapter;
-
- public class Appliction {
-
- public static void main(String args) {
- ThreeElectricOutlet outlet;
- Wash wash=new Wash();
- outlet=wash;
- System.out.println("使用三相插座接通电流");
- outlet.connectElectricCurrent();
-
- Tv tv=new Tv();
- TreeElecricAdapter adapter=new TreeElecricAdapter(tv);
- outlet= adapter;
- System.out.println("使用三相插座接通电流");
- outlet.connectElectricCurrent();
- }
- }
- package org.zhy.adapter;
-
-
-
-
-
- public class Wash implements ThreeElectricOutlet {
-
- private String name;
- public Wash() {
- name="洗衣机";
- }
- public Wash(String name){
- this.name=name;
- }
- @Override
- public void connectElectricCurrent() {
- turnOn();
- }
- private void turnOn(){
- System.out.println(name+"开始洗衣服");
- }
- }
- package org.zhy.adapter;
-
-
-
-
-
- public class Tv implements TwoElectricOutlet {
-
- private String name;
- public Tv() {
- name="长江电视机";
- }
- public Tv(String s){
- this.name=s;
- }
-
- @Override
- public void connectElectricCurrent() {
- turnOn();
- }
- private void turnOn(){
- System.out.println(name+"开始播放节目");
- }
- }
适配器的适配程度
1、完全适配
如果目标接口中的方法数目与被适配者接口的方法数目相等那么适配器可将被适配者接口与目标接口进行完全适配
2、不完全适配
如果目标接口中的方法数目少于被适配者接口的方法数目那么适配器只能将被适配者接口与目标接口进行适配
3、剩余适配
如果目标接口中的方法数目大于被适配者接口的方法数目。那么适配器可将被适配者接口与目标接口进行完全适配,但必须将目标多余的方法给出用户允许默认实现
TAG: JavaJAVAjava
点击下载系统:
http://www.myeducs.cn/chaxun/index.html?go=JAVA适配器模式示例&aa=%CB%D1%CB%F7%C2%DB%CE%C4