zoukankan      html  css  js  c++  java
  • 2018.3.25 设计模式之适配器模式详解+例子

    设计模式之适配器模式

    1.定义/概念

    适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。是作为两个不兼容的接口之间的桥梁。这种类型的设计属于结构型模式,它结合了两个独立接口的功能。
    

    2.适配器实现方式

    共有两类适配器模式:

    (1)对象适配器模式
    -- 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。
    对象适配器”通过组合除了满足“用户期待接口”还降低了代码间的不良耦合。在工作中推荐使用“对象适配”。下面是对象适配器的UML图:

    (2)类适配器模式
    -- 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。

    当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。

    package com.gult.demo11;
    
    /**
     * 适配者模式----类适配器
     * 手机需要5v电压
     * 
     * @author qichunlin
     *
     */
    public class Client {
    	public static void main(String[] args) {
    		System.out.println("=====类适配器=====");
    		Mobile m = new Mobile();
    		
    		//VoltageAdapter va = new VoltageAdapter();
    		m.charging(new VoltageAdapter());
    	}
    }
    
    
    package com.gult.demo11;
    
    /**
     * 手机需要5v电压
     * 
     * @author qichunlin
     *
     */
    public class Mobile {
    	//充电方法
    	public void charging(Voltage5 voltage5) {
    		if(voltage5.output5V() == 5) {
    			System.out.println("电压刚刚好5v,开始充电");
    		}else if (voltage5.output5V()>5) {
    			System.out.println("电压超过5v,无法进行充电");
    		}else {
    			System.out.println("电压过低!!");
    		}
    	}
    }
    
    package com.gult.demo11;
    
    /**
     * src类
     * 我们有的是220v电压
     * 
     * @author qichunlin
     *
     */
    public class Voltage220 {
    	public int output220V() {
    		int src = 220;
    		System.out.println("我是"+src+"V");
    		return src;
    	}
    }
    
    package com.gult.demo11;
    
    /**
     * dst接口:客户需要的5v电压
     *  需求类
     * @author qichunlin
     *
     */
    public interface Voltage5 {
    	int output5V();
    }
    
    package com.gult.demo11;
    
    /**
     * 完成220v----5v的转变
     * 通过继承src类,实现dst类接口,完成src->dst的适配
     * 
     * @author qichunlin
     *
     */
    public class VoltageAdapter extends Voltage220 implements Voltage5{
    
    	@Override
    	public int output5V() {
    		int src = output220V();
    		System.out.println("适配器开始适配电压");
    		int dst = src / 47;
    		System.out.println("适配完成后输出电压"+dst);
    		return dst;
    	}
    
    }
    

    4.适配器模式(Adapter Pattern)的适用场景:

    系统需要一些特定的接口、对象作为参数输入,而我们所拥有的对象,无法满足这些规定。适配器的作用就是,传入我们所拥有的类(例如220V的电),产生我们所需要的类(5V/2A的电)。

  • 相关阅读:
    返回到上一页的html代码的几种写法
    记一次网站服务器内存占用过多问题
    rpm命令数据库修复日志
    Linux vmstat命令实战详解
    innodb的innodb_buffer_pool_size和MyISAM的key_buffer_size
    mysql
    如何查看linux系统下的各种日志文件 linux 系统日志的分析大全
    /var/lock/subsys作用
    CentOS目录结构详解
    MySQL体系结构
  • 原文地址:https://www.cnblogs.com/qichunlin/p/8643418.html
Copyright © 2011-2022 走看看