本帖最后由 bluecountry 于 2011-08-04 16:14:57 编辑

解决方案 »

  1.   

    在SWING里面的添加windowsListener的时候经常用到啊,而且是JDK里面的WindowsAdapter就是实现WindowsListener的具体的适配器,你可以查查看。适配器模式本身对效率没任何提升,甚至还会增加理解代码的复杂程度,自然也有好处,能让系统松耦合,有些时候也能节约一些代码。在具体项目当中往往是求功能实现,没那么追求松耦合,用的少。其实很多SSH的项目即便很大,也没多少定义好的接口,没有接口用到的编程模式也少
      

  2.   

    在java io有用到过
    比如说ByteArrayInputStream 就是一个适配器
    ByteArrayInputStream 继承了InputSteam的接口,而封装了一个Byte数组。也就是说
    他将一个byte数组的接口适配成InputStream流处理器的接口
    当然 java的io大部分都是由适配器模式和装饰模式结合起来,或者我们称之为半透明的装饰模式。
    从iterator到Enumeration也是用了适配模式
    Iterator对象封装在一个Enumeration类型的具体类中。
    通常使用适配器模式的情况在于系统需要现有的类,而此类的接口不符合系统要求。
      

  3.   

    在这没法上传图片   你去我 博客看看我的类图  就明白了。  还有 你 以后看点好的例子。。这个例子太差了比如说       我们要 做一个画图程序  需要 实现 画圆, 这个程序你的同学已经做好了,但是根据 接口和你定义的不匹配  ,我们就使用这个模式。 public interface Shape(){     void draw();
    }class Circle() implements Shape{
          private   ConcreteCircle  c;
          public Circle(ConcreteCircle c){
    this.c=c;
    }  
          public void draw() {
               c.concreteDraw();
         } 
    }
    class ConcreteCircle(){
          public void  concreteDraw(){      System.out.println("同学实现的");
    }
    }
    适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。
    因为 Shape 已经定义了统一的接口  ,虽然你的同学实现了相同功能 但是与规定的借口不相符,所以定义一个
    适配器来把接口转换为 符合规格的接口
      

  4.   

    给出与外观模式的比较Facade 与Adapter的比较1.是否存在既有的类   A 是 ,F 是2.是否必须按照某个接口设计  A 是 ,F 不是3.对象需要多态行为么   A 可能,F 不4.需要简化接口设计么  A 不 F 是
      

  5.   


    说实话 真的很差
    adapter 主要用来 适配两个不符的接口,大多是为了重用已有的系统功能。你看上面那个例子 真的很差。。你说大师我不知道
    不过 设计模式入门 我还是推荐    《设计模式解析》  这本书真不错
    有些书写的感觉例子易懂但是思想不够
     
      

  6.   

    实现的意义就是可以让你少敲代码,至于你信不信,我反正是信了不用Adapter写的程序import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class TestFrame extends JFrame
    {
    public TestFrame()
    {
    this.setPreferredSize(new Dimension(400, 300));
    this.addWindowListener(new WindowListener()
    {
    public void windowActivated(WindowEvent arg0) 
    {} public void windowClosed(WindowEvent arg0) 
    {} public void windowClosing(WindowEvent arg0) 
    {
    System.exit(0);
    } public void windowDeactivated(WindowEvent arg0) 
    {} public void windowDeiconified(WindowEvent arg0) 
    {} public void windowIconified(WindowEvent arg0) 
    {} public void windowOpened(WindowEvent arg0) 
    {}
    });
    }

    public static void main(String[] args)
    {
    EventQueue.invokeLater(new Runnable()
    {
    public void run()
    {
    JFrame frame = new TestFrame();
    frame.pack();
    frame.setVisible(true);
    }
    });
    }
    }
    用Adapter写的程序import java.awt.*;
    import java.awt.event.*;import javax.swing.*;public class TestFrame extends JFrame
    {
    public TestFrame()
    {
    this.setPreferredSize(new Dimension(400, 300));
    this.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent arg0) 
    {
    System.exit(0);
    }
    });
    }

    public static void main(String[] args)
    {
    EventQueue.invokeLater(new Runnable()
    {
    public void run()
    {
    JFrame frame = new TestFrame();
    frame.pack();
    frame.setVisible(true);
    }
    });
    }
    }
      

  7.   


    这个例子给力,还有其他的例子吗 ,the more the better