瞎买是adapter模式的例子假设我们要打桩,有两种类:方形桩 圆形桩. 
public class SquarePeg{ 
  public void insert(String str){ 
    System.out.println("SquarePeg insert():"+str); 
  } } public class RoundPeg{ 
  public void insertIntohole(String msg){ 
    System.out.println("RoundPeg insertIntoHole():"+msg); 

} 现在有一个应用,需要既打方形桩,又打圆形桩.那么我们需要将这两个没有关系的类综合应用.假设RoundPeg我们没有源代码,或源代码我们不想修改,那么我们使用Adapter来实现这个应用: public class PegAdapter extends SquarePeg{   private RoundPeg roundPeg;   public PegAdapter(RoundPeg peg)(this.roundPeg=peg;)   public void insert(String str){ roundPeg.insertIntoHole(str);} } 
请问这句代码:public PegAdapter(RoundPeg peg)(this.roundPeg=peg;) 中peg是初始化时传过来的RoundPeg对象么?? 直接private RoundPeg roundPeg = new RoundPeg();这样不可以么,为什么adapter要按照上面代码写。。 
第二个疑问: 我看别人解释adapter意思是 adapter是为了使用接口中一个方法,而不用实现接口内所有方法,谁能帮我解释一下啊 
最好能带个例子,谢谢了 

解决方案 »

  1.   

    1,一句话:如果RoundPeg是一个接口呢?
    2,还是上面的例子,如果RoundPeg是一个接口,里面有N个方法,那PegAdapter是不是相当于只实现了RoundPeg的insertIntoHole方法?
      

  2.   


    多谢回答~~
    还是上面这个列子,那这样写也可以算是adapter模式么??public class PegAdapter extends SquarePeg{   private RoundPeg roundPeg = new RoundPeg();   public void insert(String str){ roundPeg.insertIntoHole(str);} } 
      

  3.   

    private RoundPeg roundPeg = new RoundPeg(); 你这么想是不对,适配器只是实现一个转换(转换为一个客户可接受的形式),所以重点是转换,不用管这个对象的生成,所以不要把这句话放在适配器里。这么做我觉得和适配器有出入,尽管看起来是差不多的。