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






优质内容筛选与推荐>>
1、postgresql c library use
2、2017-9-17-Windows Live Writer常用快捷键
3、pythom email postfix 邮件发送
4、js获取当前时间:封装js的日期时间
5、博客园cnblog发布word


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn