zoukankan      html  css  js  c++  java
  • 【GOF23设计模式】适配器模式

    来源:http://www.bjsxt.com/ 
    一、【GOF23设计模式】_适配器模式、对象适配器、类适配器、开发中场景 
    结构型模式

    适配器模式 
    生活中的场景

    什么是适配器模式

    笔记本电脑只有USB接口,新买的键盘是PS2接口的,需要用适配器转接一下 
    client:笔记本 
    adaptee:PS2键盘 
    target:USB接口 
    adapter:适配器 
    下面的场景,如何解决

     1 package com.test.adapter;
     2 /**
     3  * 适配器(类适配器方式)
     4  * (相当于USB和PS/2的转接器)
     5  */
     6 public class Adapter extends Adaptee implements Target{
     7     @Override
     8     public void handleReq() {
     9         super.request();
    10     }
    11 }
    12 
    13 package com.test.adapter;
    14 /**
    15  * 适配器(对象适配器方式,使用了组合的方式跟被适配对象整合)
    16  * (相当于USB和PS/2的转接器)
    17  */
    18 public class Adapter2 implements Target{
    19     private Adaptee adaptee;
    20 
    21     @Override
    22     public void handleReq() {
    23         adaptee.request();
    24     }
    25 
    26     public Adapter2(Adaptee adaptee) {
    27         super();
    28         this.adaptee = adaptee;
    29     }
    30 }
    1 package com.test.adapter;
    2 /**
    3  * 客户所期待的接口
    4  */
    5 public interface Target {
    6     void handleReq();
    7 }
     1 package com.test.adapter;
     2 /**
     3  * 被适配的类
     4  * (相当于例子中的PS/2键盘)
     5  */
     6 public class Adaptee {
     7     public void request(){
     8         System.out.println("可以完成客户需要的功能");
     9     }
    10 }
     1 package com.test.adapter;
     2 /**
     3  * 客户端类
     4  * (相当于例子中的笔记本,只有USB接口)
     5  */
     6 public class Client {
     7     public void test1(Target t){
     8         t.handleReq();
     9     }
    10 
    11     public static void main(String[] args) {
    12         Client c = new Client();
    13         Adaptee a = new Adaptee();
    14 
    15         //类适配器方式
    16         //Target t = new Adapter();
    17 
    18         //对象适配器方式
    19         Target t = new Adapter2(a);
    20 
    21         c.test1(t);
    22     }
    23 }
    控制台输出:
    可以完成客户需要的功能

    UML

    类适配器

    工作中的场景

  • 相关阅读:
    jQuery自学笔记(四):jQuery DOM节点操作
    jQuery自学笔记(三):jQuery动画效果
    jQuery自学笔记(二):jQuery选择器
    面试记录与复盘总结
    wh-研发功能复盘
    st项目-要素标记功能的实现以及经验总结
    ST项目经验总结2
    S台项目记录-1
    统计模型项目开发经验汇总
    开发规范
  • 原文地址:https://www.cnblogs.com/erbing/p/5802451.html
Copyright © 2011-2022 走看看