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模式,就是适配器模式,使两个原本没有关联的类结合一起使用. 平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类 ...
随机推荐
- 新人补钙系列教程之:Molehill底层API中最重要的Context3D
Context3D,是一个三维空间的处理环境,负责创建并处理三维对象的各个要素如顶点.片段.透视等等,并将处理的结果使用AGAL(Adobe图形汇编语言)上传给显卡进行运算,运算结果最终被回传给CPU ...
- ubuntu 查看系统服务的列表
service --status-all
- SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证)
落雨 cas 单点登录 本篇将讲解cas-server端的认证方式 1.最简单的认证,用户名和密码一致就登录成功 2.配置Oracle的jdbc数据源,通过spring动态查询数据库 3.配置orac ...
- Swagger2 (3) 集成easymock 生成mock 测试数据
转载:http://blog.csdn.net/sai739295732/article/details/73957138 2.可以集成swagger 3.我们来玩一下 首先你需要一个swagger ...
- Win7如何开启Messenger服务
1 如图所示,在WIN7系统中没有找到Messenger这个服务.因为Messenger在Windows 7/Server 2008 R2里都去掉了 2 而在XP系统中,开启了Messenger服 ...
- Quaternion 四元数
Quaternions are used to represent rotations. 四元数用于表示旋转. They are compact, don't suffer from gimbal l ...
- vue笔记四
十一.过渡与动画 1.使用限制Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加 entering/leaving 过渡条件渲染 (使用 v-if)条件展示 (使 ...
- java web 分页实现
分页实现的效果: ///////// /////////////////////////////////////////////////////// /////////////////// ...
- django book学习问题记录
—————————————————————————————————— 位置:第五章<模型> 问题描述(已解决): >>> p1 = Publisher.objects.c ...
- c#调用WinRAR软件压缩和解压文件
using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Linq ...