2.设计模式---Adapter模式
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模式的更多相关文章
- java设计模式—Adapter模式
1.核心意图: 将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的类可以一起工作. 该模式的目标是通过一个代理(这里是Adapter),在原来的类(Adap ...
- 设计模式Adapter模式的五分钟
五分钟一个设计模式.来形容叙述的设计模式的最简单方法.看到许多其他设计模式,请点击五分钟一个设计模式系列 http://blog.csdn.net/daguanjia11/article/catego ...
- 设计模式--适配器(Adapter)模式
今天学习另一个设计模式,适配器(Adapter)模式,这是一个共同方向,但有特殊要求,就应用到此设计模式.写到这里,想起很久以前,有写过一篇<ASP.NET的适配器设计模式(Adapter)&g ...
- 设计模式之Adapter模式
说起Adapter,STL里的stack和queue都是adapter,底层是deque,隐藏了deque的一些接口,使得其可以达到FIFO是queue,LIFO是stack. The STL sta ...
- Java设计模式(9)适配器模式(Adapter模式)
适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 为何使用适配器模式 我们经常碰到要将两个没有关系的类组合在一起使用 ...
- 设计模式(二)Adapter模式
Adapter模式也被成为Wrapper模式.适配器模式用于填补“现有的程序”和“所需的程序”之间差异的设计模式. Adapter模式有两种,即使用继承的适配器和使用委托的适配器. 1.使用继承的适配 ...
- 一天一个设计模式——Adapter适配器模式(Wrapper模式)
一.模式说明 在现实生活中,当需要将两种设备连接起来,但是两个设备的接口规范又不一致(比如电脑上只有Type-C接口,但是你的显示器是HDMI接口),这时候就需要一个适配器,适配器一端连接电脑,一端连 ...
- 2、适配器 adapter 模式 加个"适配器" 以便于复用 结构型设计模式
1.什么是适配器模式? 适配器如同一个常见的变压器,也如同电脑的变压器和插线板之间的电源连接线,他们虽然都是3相的,但是电脑后面的插孔却不能直接插到插线板上. 如果想让额定工作电压是直流12伏特的笔记 ...
- 设计模式学习笔记-Adapter模式
Adapter模式,就是适配器模式,使两个原本没有关联的类结合一起使用. 平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类 ...
随机推荐
- Unity载入和内存管理机制
Unity几种动态载入Prefab方式的差异: 事实上存在3种载入prefab的方式: 一是静态引用,建一个public的变量,在Inspector里把prefab拉上去,用的时候instantiat ...
- UI自动化测试篇 :ReportNG替代TestNG自带html版测试报告初探
转载http://www.cnblogs.com/chengtch/p/6071322.html “1.1.4版本的ReportNG是最后一个版本,之后不再做维护.作为一个简单的测试报告插件,它是创造 ...
- JAVA Eclipse如何重新设置工作空间workspace
窗口-首选项-常规-启动和关闭,勾选启动时提示工作空间,然后移除现有的工作空间,最好也勾选启动时刷新工作空间 重启之后就可以设置工作空间了
- TP框架中/ThinkPHP/Library/Think/Storage/Driver/File.class.php 错误
/ThinkPHP/Library/Think/Storage/Driver/File.class.php LINE: 48错误 这是一个将windows下运行正常的ThinkPHP框架移到L ...
- 【转】Intellij IDEA常用配置详解
1. IDEA内存优化 先看看你机器本身的配置而配置. \IntelliJ IDEA 8\bin\idea.exe.vmoptions -------------------------------- ...
- d3系列2--api攻坚战02
<html> <head> <style type="text/css"> .area{ fill:steelblue; } </styl ...
- 在caffe中用训练好的 caffemodel 来分类新的图片所遇到的问题
结合之前的博客: http://www.cnblogs.com/Allen-rg/p/5834551.html#3949333 用caffemodel去测试单通道的图像(mnist数据集)时,出现了问 ...
- 在SDL中显示GBK点阵汉字
大家注意到没有,RA2的中文版本使用的是GBK点阵字库,这样做有一个好处:不管玩家是用的简体还是繁体都能识别显示的文字. GBK的意思大概是“国家标准汉字扩展字符集”吧,记不清了.但它的确是个好东东, ...
- MySQL四-1:数据类型
阅读目录 一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型 一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 ...
- hibernate 注解之 SequenceGenerator
hibernate 注解之 SequenceGenerator https://blog.csdn.net/zgf19930504/article/details/54694807 JPA @Id 和 ...