当前位置: 代码迷 >> J2SE >> 马上结贴,写三句半代码实现适配器模式,大家看看对不对?该怎么解决
  详细解决方案

马上结贴,写三句半代码实现适配器模式,大家看看对不对?该怎么解决

热度:59   发布时间:2016-04-24 12:13:41.0
马上结贴,写三句半代码实现适配器模式,大家看看对不对??
Java code
package myTable;import java.util.ArrayList;interface IStack{   void push(int a);   void pop();   int getPeak();}public class ObjectAdapter implements IStack{   ArrayList adaptee;   public void push(int a){      adaptee.add(a);   }      public void pop(){      adaptee.remove(adaptee.size()-1);   }      public int getPeak(){      return (Integer) adaptee.get(adaptee.size()-1);   }}


------解决方案--------------------
除了adaptee没初始化,形象。
我的理解就是适配器就是2个不同组件之间连接。
------解决方案--------------------
挺形象的了..

不过我更喜欢将适配器定义成抽象类..
------解决方案--------------------
适配者模式将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份.
你这里Adaptee为IStack,Adaptor为ObjectAdapter,属于适配者模式中的对象适配器。这样写没有问题。
------解决方案--------------------
2.为什么要用抽象类:   

此类是不要被实例化的。而只充当适配器的角色,也就为其子类提供了一个共同的接口,但其子类又可以将精力只集中在其感兴趣的地方。 


摘自 适配器模式 from百度百科

------------------------------------------------------

我觉得是个人理解不同,因为我认为的适配器模式是实现了一个接口的所有方法的抽象类,

而这样的类用户在使用的时候就可以专注的实现自己需要的方法,而不用像继承接口的那样需要实现所有方法。

如:

Java code
interface athlete{   void run();   void swim();   void dive();}public abstract class athleteAdapter implements athlete{   public void run(){   }      public void swim(){   }     public void dive(){   }}class athletes extends athleteAdapter{    public void run(){        System.out.println("Start running!");    }}class swimmer extends athleteAdapter{    public void swim(){        System.out.println("Start swimming!");    }}class diver extends athleteAdapter{    public void dive(){        System.out.println("Start diving!");    }    }
------解决方案--------------------
7楼的看起来更一目了然
------解决方案--------------------
学习学习!
------解决方案--------------------
学习ing
------解决方案--------------------
组合优先于继承
  相关解决方案