1.概念:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配无法在一起工作的两个类可以在一起工作。

2.场景:

  //1.创建一个鼠标事件接口

1 interface MouseListener(){ 
2      public void onClick();//单机事件 
3      public void onDbClick();//双击事件 
4      public void onRightClick();//右键事件 
5 }

  //2.创建一个按钮对象

 1 class Button(){ 
 2      private MouseListener l;//监听事件 
 3      public void setListener( MouseListener l){ 
 4         this.l=l; 
 5      }
     //单击方法
6 public void click(){ 7 l.onClick(); 8 }
     //双击方法
9    public void dbClick(){
10     l.onDbClick();
11   }
12 }

  //3.运行

  3.1创建单个按钮实现单击操作

 1 class Adapter(){ 
 2     public static void main(String args[]){ 
 3         Button a=new Button(); 
 4         //匿名内部类对象 
 5         a.setListener(new MouseListener(){ 
 6             public void onClick(){ 
 7                 System.out.println("单击了a按钮"); 
 8             }; 
 9             public void onDbClick(){};//双击事件 
10             public void onRightClick(){};//右键事件 
11         }); 
12         a.click(); 
13     } 
14  
15 }            

  3.2创建多个按钮,实现单击事件

 1 class Adapter(){ 
 2     public static void main(String args[]){ 
 3         Button a=new Button(); 
 4         //匿名内部类对象 
 5         a.setListener(new MouseListener(){ 
 6             public void onClick(){ 
 7                 System.out.println("单击了a按钮"); 
 8             }; 
 9             public void onDbClick();//双击事件 
10             public void onRightClick();//右键事件 
11         }); 
12         a.click(); 
13  
14         Button b=new Button(); 
15         //匿名内部类对象 
16         b.setListener(new MouseListener(){ 
17             public void onClick(){ 
18                 System.out.println("单击了b按钮"); 
19             }; 
20             public void onDbClick();//双击事件 
21             public void onRightClick();//右键事件 
22         }); 
23         b.click(); 
24  
25     } 
26  
27 }

通过3.1和3.2的对比,在多个按钮实现相同操作的时候,须将接口中的每个方法都得实现,代码量大而且冗余,故可使用适配对象先实现接口;

  //4.创建适配对象

1 //创建一个没有抽象方法的抽象类对鼠标监听接口进行空实现 
2 abstract MouseAdapter() implements MouseListener { 
3      public void onClick(){}; 
4      public void onDbClick(){}; 
5      public void onRightClick(){}; 
6 }

  //5.运行

  5.1创建单个按钮实现单击操作

 1 class Adapter(){ 
 2     public static void main(String args[]){ 
 3         Button a=new Button(); 
 4         //匿名内部类对象 
 5         a.setListener(new MouseAdapter(){ 
 6             public void onClick(){ 
 7                 System.out.println("单击了a按钮"); 
 8             }; 
 9         }); 
10         a.click(); 
11     } 
12 }

  5.2创建多个按钮实现不同操作

 1 class Adapter(){ 
 2     public static void main(String args[]){ 
 3         Button a=new Button(); 
 4         //匿名内部类对象 
 5         a.setListener(new MouseAdapter(){ 
 6             public void onClick(){ 
 7                 System.out.println("单击了a按钮"); 
 8             }; 
 9         }); 
10         a.click();//单击 
11  
12         Button b=new Button(); 
13         //匿名内部类对象 
14         b.setListener(new MouseAdapter(){ 
15             public void onDbClick(){ 
16                 System.out.println("双击了b按钮"); 
17             }; 
18         }); 
19         b.dbClick();//双击 
20     } 
21 }

通过5.1和5.2的对比,在多个按钮实现不同操作的时候,不必将接口中的每个方法都得实现,需要什么方法实现什么方法;







发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

java设计模式--简单工厂模式知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。