今天来给大家说说适配器,适配器顾名思义就是把一个原来不合适你需求的物品改变为适合你的物品。
但是改变需求有很多办法,你要采取哪一种适配器,取决当时的实际情况,下面我将把我理解的适配器原理给大家以插头座的方式来讲解。
类的适配器
如果你需要一个二孔的插头座还要有着一孔的功能,但是你只有一个一孔的插头座,你会怎么办?
办法 1:我们可以买一个二孔的呀,他就有二孔的功能,我们再手动打一个孔呗!(新的类不仅有新的功能还有原来类的功能!)
这个就是类的适配器
下面是 一孔插头座的实现类
。
public class adapter_FatherClass
{
adapter_FatherClass()
{
}
public void idea1()
{
System.out.println("我是一个一孔插头");
};
}
//我就是一个一孔的插头座
下面展示一些 二孔插头座的实现类
。
public class adapter_Class extends adapter_FatherClass implements adapter_interface
{
adapter_Class()
{
super();
}
public void idea2()
{
System.out.println("我是一个二孔插头");
}
}
而我们的需求在没达成之前是不是要先申明一下,或者说立下flag,这就是接口
下面展示一些 接口的实现
。
public interface adapter_interface
{
public void idea1();
public void idea2();
}
对象的适配器
同样的需求,为了不浪费原来的一孔插头座,我们是不是可以这样!
办法2:我们买一个二孔的插头座,再手动的把这个二孔的插头座和原来的一孔插头座绑一起呗!(用一个新的类其实没有原来类的功能只是调用了原来类的功能!)
这个就是对象的适配器。
首先我们有一个父类他就是一孔的插头座。
下面是 一孔插头座的实现类
。
public class adapter_FatherClass
{
adapter_FatherClass()
{
}
public void idea1()
{
System.out.println("我是一个一孔插头");
};
}
//我就是个一孔的插头座
下面是 二孔插头座的实现类(他调用了父类的方法)
。
public class adapter_FatherClass_object extends adapter_FatherClass
{
private adapter_FatherClass A;
adapter_FatherClass_object (adapter_FatherClass A)
{
super();
this.A=A;
}
public void idea1()
{
A.idea1();
}
public void idea2()
{
System.out.println("我是一个二孔插头");
}
}
//我是一个有着二孔功能并且绑上了一个一孔插头座的插头座哦
接口还是没变
下面展示一些 接口的实现
。
public interface adapter_interface
{
public void idea1();
public void idea2();
}
这样是不是就清楚多了,很简单吧。
接口的适配器
现在我们有遇到一种情况,我们啥都没有,但是需要一个一孔插头座,还需要一个二孔插头座,咋办?
办法:我们直接就去买一个一孔插头座和二孔插头座,我们有钱不用节约!(创建两个类,分别实现两种功能)
下面是 一孔插头座的实现类
。
public class adapter1 extends adapter_abatract
{
adapter1()
{
}
public void idea1()
{
System.out.println("我是一孔插座");
}
}
下面是 二孔插头座的实现类
。
public class adapter2
{
adapter2 ()
{
}
public void idea2()
{
System.out.println("我是二孔插座");
}
}
但是有个问题,插头座不仅仅就只有一孔和二孔的吧,所以我们要约束一下。所以我们写了一个抽象类的插头座。
下面展示一些 抽象类插头座的实现
。
public abstract class adapter_abatract implements adapter_allinterface{
public void idea2()
{
}
public void idea1()
{
}
}
接着咱们的需求还是没有变,还是需要一孔插头座和二孔插头座,所以呢,接口还是不变
下面是 接口的实现
。
public interface adapter_allinterface
{
public void idea1();
public void idea2();
}
到此是不是感觉有趣还理解了,很简单吧,嘻嘻。