zoukankan      html  css  js  c++  java
  • 适配器模式

    模式定义

    适配器模式:将一个借口转化成客户希望的另一个接口,适配器模式使接口不兼容的类可以一起工作。

    模式结构图

     模式分析

    适配器有如下几个角色

    1.Target(目标抽象类)

    定义客户要用的特定领域的接口,可以是个抽象类或借口,也可以是具体类。

    2.Adapter(适配器类)

    适配器类可以调用另一个接口,作为一个转化器,对Adaptee和Target进行适配,适配器Adapter是适配器模式的核心,在类适配器中,他通过实现Target接口并继承类来使两者修昂胡联系。

    3.Adaptee(适配者类)

    适配者即被适配的角色,它定义了一个已经存在的接口。这个接口需要适配,适配类一般是一个实体类,它包含了客户希望使用的业务方法。

    4.Clientlei(客户类)

    针对目标抽象类进行编程。

    优点:

    (1)将目标类和适配类解耦

    (2)增加了类的透明性和复用性

    (3)灵活性和扩展性很好

    缺点:

    (1)java,C#不支持类的多重继承。

    机器人模仿狗案例

    机器人接口类

    package com.zck.adapter;
    
    //仿生机器人接口
    public interface Robot {
    	public void cry();
    	public void move();
    }
    

      

    狗实体类

    package com.zck.adapter;
    
    public class Dog {
    	public void wang(){
    		System.out.println("狗汪汪叫");
    	}
    	public void run(){
    		System.out.println("狗快快跑");
    	}
    }
    

      

    狗适配器类

    package com.zck.adapter;
    
    public class DogAdapter extends Dog implements Robot {
    
    	public void cry() {
    		System.out.println("机器人模仿");
    		super.wang();
    	}
    
    	public void move() {
    		System.out.println("机器人模仿");
    		super.run();
    
    	}
    
    }
    

      

    客户端类

    package com.zck.adapter;
    
    public class Client {
    	public static void main(String[] args) {
    		DogAdapter dogAdapter = new DogAdapter();
    		Robot robot = dogAdapter;
    		robot.cry();
    		robot.move();
    	}
    
    }
    

      

    测试结果

  • 相关阅读:
    错位排序
    不容易系列之(4)——考新郎
    大数乘法
    神、上帝以及老天爷(错位排序)
    学生成绩……
    蛇形矩阵
    topcoder
    进制转换
    问题 1011
    topcoder 针对C程序员的TopCoder C++ (快速掌握)_ixigua—仅有杀毒软件是不够的…… .
  • 原文地址:https://www.cnblogs.com/2016-zck/p/13926308.html
Copyright © 2011-2022 走看看