java设计模式--适配器模式

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的对比,在多个按钮实现不同操作的时候,不必将接口中的每个方法都得实现,需要什么方法实现什么方法;






posted @ 2018-09-01 12:27  talenter  阅读(151)  评论(0编辑  收藏  举报