Adapter模式也就是适配器模式,最常见的就是这个:码农必备--------------》笔记本电源适配器:

那么这玩意到底是干嘛的??

手工画图一张:

220V----------------------》11V这中间就需要适配器来适配,但是最后电脑也并不知道这中间到底怎么搞定的,他只明白他链接的是适配器,调用的是适配器,其他的就适配器在维护了!

适配器模式分2种:

      1.类的继承

      2.委托

先说第一种:

上代码后,在分析:

      先上220V电压

        

package adapter.model;
/**
* 相当于小jie妹
* @author zengrong
*
*/
public class Banner {
private String name; public Banner(String name) {
super();
this.name = name;
} public void showwithParen() {
System.out.println("--特殊可爱小武器---"+name+"-----");
} public void showWithAster() {
System.out.println("---200块真不贵-"+name+"----");
}
}

再来电脑这端

    

package adapter.model;
/**
* 相当于你自己
* @author zengrong
*
*/
public interface Print {
/**
* 你的需求
*/
public abstract void printHow();
/**
* 一晚上how much
*/
public abstract void printOneNightHowMuch();
}

适配器:

package adapter.model;
/**
* 相当于小jie妹的"经济人"
* @author zengrong
* 小jie妹的经纪人肯定要知道小jie妹的想的啥,当然继承了就完全知道了。
* 经纪人为了给小jie妹接*,肯定要实现你的方法,来满足你的需求!
* 哈哈。。。。
*
*这是适配器模式中得:类继承的适配模式
*
*
*
*/
public class PrintBanner extends Banner implements Print { public PrintBanner(String name) {
super(name);
} @Override
public void printHow() { showWithAster();
} @Override
public void printOneNightHowMuch() {
showwithParen(); } }

main:

package adapter.main;

import adapter.model.Print;
import adapter.model.PrintBanner; public class App {
public static void main(String[] args) {
Print banner = new PrintBanner("凤姐");
banner.printHow();
banner.printOneNightHowMuch();
}
}

结果:

--------------------------华丽分割线-------------------------------------------------------------------------------------------------------

适配模式----类继承:在这里,我们的适配器必须知道需要适配的一方,是适配的需求,不然也没办法完成适配!

--------------------------------------------------------------------------------------------------------------------------------------------------

适配器模式-----委托:相当于这种找小jie妹的事情我不好意思亲自出面,委托出去!

代码相似:

贴下:

package adapter.model;
/**
* 相当于小jie妹
* @author zengrong
*
*/
public class BannerTwo {
private String name; public BannerTwo(String name) {
super();
this.name = name;
} public void showwithParen() {
System.out.println("--特殊可爱小武器---"+name+"-----");
} public void showWithAster() {
System.out.println("---200块真不贵-"+name+"----");
}
}
package adapter.model;
/**
* 相当于小jie妹的"经济人"
* @author zengrong
* 小jie妹的经纪人肯定要知道小姐妹的想的啥,当然继承了就完全知道了。
* 经纪人为了给小jie妹接*,肯定要实现你的方法,来满足你的需求!
* 哈哈。。。。
*
*这是适配器模式中得:类继承的适配模式
*
*
*
*/
public class PrintBannerTwo extends PrintTwo { private BannerTwo Banner2; public PrintBannerTwo(String str) {
super();
this.Banner2=new BannerTwo(str);
} @Override
public void printHow() {
Banner2.showWithAster(); } @Override
public void printOneNightHowMuch() {
Banner2.showWithAster(); } }

  

package adapter.model;

public abstract class PrintTwo {
/**
* 你的需求
*/
public abstract void printHow();
/**
* 一晚上how much
*/
public abstract void printOneNightHowMuch();
}

适配器弥补了,类之间的缝隙,复用了其他类中得方法,这样也会减少编写多个类,

但是不是所有的类都要使用适配,例如2个完全功能不相同的完全没必要适配!

我们在代码的升级过程中,旧的代码和新的代码之间就可以使用适配来进行更新改造!

-----------------------------------------睡觉!!

2.设计模式---Adapter模式的更多相关文章

  1. java设计模式—Adapter模式

    1.核心意图:     将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作. 该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adap ...

  2. 设计模式Adapter模式的五分钟

    五分钟一个设计模式.来形容叙述的设计模式的最简单方法.看到许多其他设计模式,请点击五分钟一个设计模式系列 http://blog.csdn.net/daguanjia11/article/catego ...

  3. 设计模式--适配器(Adapter)模式

    今天学习另一个设计模式,适配器(Adapter)模式,这是一个共同方向,但有特殊要求,就应用到此设计模式.写到这里,想起很久以前,有写过一篇<ASP.NET的适配器设计模式(Adapter)&g ...

  4. 设计模式之Adapter模式

    说起Adapter,STL里的stack和queue都是adapter,底层是deque,隐藏了deque的一些接口,使得其可以达到FIFO是queue,LIFO是stack. The STL sta ...

  5. Java设计模式(9)适配器模式(Adapter模式)

    适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 为何使用适配器模式 我们经常碰到要将两个没有关系的类组合在一起使用 ...

  6. 设计模式(二)Adapter模式

    Adapter模式也被成为Wrapper模式.适配器模式用于填补“现有的程序”和“所需的程序”之间差异的设计模式. Adapter模式有两种,即使用继承的适配器和使用委托的适配器. 1.使用继承的适配 ...

  7. 一天一个设计模式——Adapter适配器模式(Wrapper模式)

    一.模式说明 在现实生活中,当需要将两种设备连接起来,但是两个设备的接口规范又不一致(比如电脑上只有Type-C接口,但是你的显示器是HDMI接口),这时候就需要一个适配器,适配器一端连接电脑,一端连 ...

  8. 2、适配器 adapter 模式 加个"适配器" 以便于复用 结构型设计模式

    1.什么是适配器模式? 适配器如同一个常见的变压器,也如同电脑的变压器和插线板之间的电源连接线,他们虽然都是3相的,但是电脑后面的插孔却不能直接插到插线板上. 如果想让额定工作电压是直流12伏特的笔记 ...

  9. 设计模式学习笔记-Adapter模式

    Adapter模式,就是适配器模式,使两个原本没有关联的类结合一起使用. 平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类 ...

随机推荐

  1. ElasticSearch 组合过滤器

    1.布尔过滤器 前篇文章中(term精确查找)的两个例子都是单个过滤器(filter)的使用方式. 在实际应用中,我们很有可能会过滤多个值或字段.比方说,怎样用 Elasticsearch 来表达下面 ...

  2. 配置Linux实现静态路由

    配置Linux实现静态路由 背景和原理 路由器的功能是实现一个网段到另一个网段之间的通信,路由分为静态路由.动态路由. 默认路由和直连路由.静态路由是手工指定的,使用静态路由的好处是网络安全保密性高. ...

  3. 使用Kinect2作为Oculus游戏应用的输入设备

    注: 文章写于2015年8月, 眼下VR游戏Demo已经完结, 所以把上一次预研的一些经验分享出来, 希望对大家有所帮助 背景 初接触Oculus时, 从网上下载了一大堆的Demo来体验, 可是, 操 ...

  4. hibernate学习系列-----(5)hibernate基本查询下篇:hibernate聚合函数、分组查询及命名查询

    在上一篇中,大致学习了hibernate的基本查询:HQL基本查询,今天,继续昨天的步伐,继续学习hibernate的基本查询..... 1.hql聚合函数,先大致列一下hql的聚合函数有哪些吧: 在 ...

  5. VENOM cve-2015-3456 Qemu 虚拟机逃逸漏洞POC

    #include <sys/io.h> int main() { int i ; iopl(3); outb(0x8e, 0x3f5); outb(0x41, 0x3f5); outb(0 ...

  6. 分组password算法

    代换,S盒.扩散和混淆,这些概念构成了分组password学的基础. 假设明文和密文的分组长度都为n比特,则明文的每个分组都有2n个可能的取值; 代换: 为使加密运算可逆(即解密运算可行),明文的每个 ...

  7. JavaScript 判断浏览器及版本

    /* 智能机浏览器版本信息: alert("语言版本: "+browser.language); alert(" 是否为移动终端: "+browser.vers ...

  8. charles用法详解

    Charles是目前最强大的http调试工具,在界面和功能上远强于Fiddler,同时是全平台支持,堪称圣杯级工具,唯一的缺陷是这货是收费的,而且是要¥50美元大洋…当然网上是有破解版的,鄙视下自己, ...

  9. OrCAD16.6中对比两份DSN文件的方法

    OrCAD16.6中对比两份改版前后DSN文件的方法 两种方法: (1)第一种用软件对比netlist (2)用orcad自带的对比功能 一.将两份要对比的原理图都生成orTelesis.dll格式的 ...

  10. webAPI 405

    web.config 配置 <system.webServer> <modules> <remove name="WebDAVModule" /> ...