`
king_tt
  • 浏览: 2121970 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计模式 适配器模式 以手机充电器为例

 
阅读更多

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25833393

坚持,坚持~

继续设计模式,尼玛停了段时间就不想写了,一定要坚持~今天带来适配器模式

老样子,定义:将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。这个定义还好,说适配器的功能就是把一个接口转成另一个接口。

发现两张图片可以很好的解释适配器模式:



这两张图很好的说明了适配器的作用哈,话说我当年买了个欧版的HTC G17 ,还配了个插头转化器,这个插头转化器就是起得适配器的作用。下来来点代码解释哈,如题目,手机充电器一般都是5V左右吧,咱天朝的家用交流电压220V,所以手机充电需要一个适配器(降压器),有什么物理名词使用错误的,见谅。

首先一部手机:Mobile.java

package com.zhy.pattern.adapter;

public class Mobile
{
	/**
	 * 充电
	 * @param power 
	 */
	public void inputPower(V5Power power)
	{
		int provideV5Power = power.provideV5Power();
		System.out.println("手机(客户端):我需要5V电压充电,现在是-->" + provideV5Power + "V");
	}
}

可以看出,手机依赖一个提供5V电压的接口:

package com.zhy.pattern.adapter;
/**
 * 提供5V电压的一个接口
 * @author zhy
 *
 */
public interface V5Power
{
	public int provideV5Power();
}

然后我们拥有的是220V家用交流电:

package com.zhy.pattern.adapter;

/**
 * 家用220V交流电
 * @author zhy
 *
 */
public class V220Power
{
	/**
	 * 提供220V电压
	 * @return
	 */
	public int provideV220Power()
	{
		System.out.println("我提供220V交流电压。");
		return 220 ; 
	}
}

下面我们需要一个适配器,完成220V转5V的作用:

package com.zhy.pattern.adapter;

/**
 * 适配器,把220V电压变成5V
 * @author zhy
 *
 */
public class V5PowerAdapter implements V5Power
{
	/**
	 * 组合的方式
	 */
	private V220Power v220Power ;
	
	public V5PowerAdapter(V220Power v220Power)
	{
		this.v220Power = v220Power ;
	}

	@Override
	public int provideV5Power()
	{
		int power = v220Power.provideV220Power() ;
		//power经过各种操作-->5 
		System.out.println("适配器:我悄悄的适配了电压。");
		return 5 ; 
	} 
	
}

最后测试,我们给手机冲个电:

package com.zhy.pattern.adapter;

public class Test
{
	public static void main(String[] args)
	{
		Mobile mobile = new Mobile();
		V5Power v5Power = new V5PowerAdapter(new V220Power()) ; 
		mobile.inputPower(v5Power);
	}
}

输出:

现有类:我提供220V交流电压。
适配器:我悄悄的适配了电压。
手机(客户端):我需要5V电压充电,现在是-->5V

可以看出,我们使用一个适配器完成了把220V转化了5V然后提供给手机使用,且我们使用了组合(OO设计原则),原有的手机,以及200V电压类都不需要变化,且手机(客户端)和220V(被适配者)完全解耦。

最后画个uml类图,便于大家理解:


上面是适配器的类图,下面是我们的例子的类图,咋样,还不错吧。没事画个图也不错,不然软件都白装了。。。。



最后,恭喜你,你又学会了一个设计模式,适配器模式。持续求赞,求留言~

分享到:
评论

相关推荐

    设计模式:结构型-适配器模式

    以生活中手机充电为例来讲解适配器模式, 手机本身并不能直接用220V交流电, 需要将220V的交流电转换为5V的直流电, 在这个过程 中, 充电器本身相当于Adapter(适配器) , 220V交流电相当于Adaptee (适配者), 5V...

    C++设计模式之适配器模式

    就是说,如果没有这个电源适配器,我们的手机和电脑就不能进行充电了。 之前同事去日本出差,由于工作需要,就将自己的笔记本带过去了。到了的当晚就悲剧了,笔记本无法使用。由于日本的居民用电电压是110V,而中国...

    PHP设计模式之适配器模式定义与用法详解

    适配器很容易理解, 大多数人家庭都有手机转接器, 用来为移动电话充电,这就是一种适配器. 如果只有USB接头, 就无法将移动电话插到标准插座上. 实际上, 必须使用一个适配器, 一端接USB插头, 一端接插座. 当然, 你可以...

    解析C#设计模式编程中适配器模式的实现

     适配器模式的设计思想在生活中经常会应用到,如我们在给手机充电的时候,不可能直接在220V电源上直接充电,而是用手机充电器转换成手机需要的电压才可以正常充电,否则就不可以完成充电,这个充电器就起到了适配的...

    C#设计模式编程中运用适配器模式结构实战演练

     适配器模式的设计思想在生活中经常会应用到,如我们在给手机充电的时候,不可能直接在220V电源上直接充电,而是用手机充电器转换成手机需要的电压才可以正常充电,否则就不可以完成充电,这个充电器就起到了适配的...

    消费电子中的一种新型手机自动断电充电器的设计

    充电器(电源适配器)作为供给手机电池电能的必备品,其使用量不亚于手机。如何降低充电器空载状态和充满状态下的电耗必将成为整个社会所必须面临的问题。  大部分手机用户在给手机充完电后,为图省事,都不拔插出...

    电源技术中的满足高能效标准的低功率充电器与适配器设计

    美国和欧盟都出台了多个低能耗标准,这些标准对无负载功耗以及最小活动模式效率作出了严格规定,对功率充电器与适配器的设计带来一定挑战。本文介绍了当前全球主要的能效标准发展情况,在比较几种电源方案的特点基础...

    一种新型手机自动断电充电器的设计

    充电器(电源适配器)作为供给手机电池电能的必备品,其使用量不亚于手机。如何降低充电器空载状态和充满状态下的电耗必将成为整个社会所必须面临的问题。  大部分手机用户在给手机充完电后,为图省事,都不拔插出...

    详解Objective-C编程中对设计模式中适的配器模式的使用

    引言  在项目开发中,有时候会遇到这样的一种情景:需要使用... 这个定义应该很好理解,生活中也到处充满着适配器模式的应用,比如说我们手机的充电器:手机是不能在220V电源上直接充电的,充电器将电压转换成手机

    SD4054是一个完整的恒流/恒压单节锂离子电池线性充电器

    池线性充电器。它的ThinSOT封装和低外部元件 计数使SD4054非常适合便携式应用。此外, SD4054专为符合USB电源规格而设计。 由于内部MOSFET结构,不需要外部检测电阻, 也不需要阻塞二极管。热反馈调节充电电流,以 ...

    I2C 控制 4.5A 单节 USB/适配器充电器参考设计-电路方案

    该参考设计是高度集成的开关模式电池充电管理和系统电源路径管理解决方案,适用于各种平板电脑和其他便携式器件中使用的单节锂离子和锂聚合物电池。它的低阻抗电源路径对开关模式运行效率进行了优化、减少了电池充电...

    TSM.rar_SERIES OF TSM_TSM设计_充电控制

    TSM该系列产品内部集成有一个电压基准器件和两个运算放大器,电压基准器件和一个运算放大器的集成构成理想的电压...该类IC广泛用于需要恒压(CV)和恒流(CC)模式的开关电源中,如要求恒 压和输出限流的充电器及适配器中

    基于BQ24610的智能锂电池充电系统设计

    摘要:BQ24610是TI公司推出的一款比较先进的,面向5V至28V电压输入的锂离子电池供电应用开关模式独立电池充电器IC.基于便携式分子筛制氧机的电源管理的设计需求,经过对一系列芯片原理、性能、参数设置的分析讨论,...

    飞兆USB兼容锂电池开关式充电器FAN5400系列

    在通过USB端口或 AC/DC适配器为单节或双节锂离子(Li-Ion)电池充电时,设计人员需要能够提高充电速度并解决线性充电器相关的散热问题的解决方案。为了满足这一需求,飞兆半导体公司(Fairchild Semiconductor)开发了...

    基于MCP73833的锂电池充电器电路+PCB源文件-电路方案

    该锂电池充电器基于MCP73833设计,通过min-B USB接口与任何USB接口的适配器相连接。充电过程分为三个阶段:预处理充电模式,然后是快速横流充电,最后是恒压充电保持电池充电电压。该锂电池充电器默认最大快充电流值...

    昂宝OB5269_Preliminary_Datasheet_(323-334).pdf

    OB5269开关电源调试-电源管理方案充电器/适配器 OB5269是一个高性能的电流模式PWM控制器,集成了高压启动,高性能,低待机功耗和成本效益的离线反激式转换器应用进行了优化。 VDD低启动电流和低工作电流100mW的输入...

    电源技术中的安森美推出5W交流-直流适配器GreenPoint参考设计

    安森美半导体(ON Semiconductor)近日推出用于恒流恒压(CCCV)手机充电器的5瓦(W)交流-直流(ac-dc)适配器GreenPoint公开参考设计。这参考设计具有高电源工作效率和低待机能耗,超越美国“能源之星”(ENERGY STAR)针对...

    day020-继承加强和设计模式代码和笔记.rar

    (苹果充电器和华为手机充电的问题) 扩展性强,成本低廉 使用场景: 不同的类需要配合完成功能 4. 简单工厂模式:(了解)Spring框架中有用到 简单工厂模式:(后面可以用反射优化代码) ...

    电源技术中的凌特推出带有同步600mA降压转换器的双输入锂离子电池充电器

    其独立运行模式能够简化设计,无需为充电终止而加设外置微处理器。该充电器采用一种恒流/恒压算法,利用交流适配器电源或USB电源分别可提供高达950mA或500mA的充电电流。不论在哪种情况下,最终浮动电压的精度均为±...

    程序设计实验大纲

    手机生产与销售系统,实现手机各部分零件的生产与组装、手机充电器的问题、生产一批同款式的手机和手机销售给顾客的信息,采用了外观模式、建造者模式、适配器模式、原型模式和模板方法模式

Global site tag (gtag.js) - Google Analytics