【设计模式】—— 适配器模式Adapter
前言:【模式总览】——————————by xingoo
模式意图
如果已经有了一种类,而需要调用的接口却并不能通过这个类实现。因此,把这个现有的类,经过适配,转换成支持接口的类。
换句话说,就是把一种现有的接口编程另一种可用的接口。
模式结构
【类的适配器】

Target 目标接口
Adaptee 现有的类
Adapter 中间转换的类,即实现了目标接口,又继承了现有的类。
package com.xingoo.test1;
interface Target{
public void operation1();
public void operation2();
}
class Adaptee{
public void operation1(){
System.out.println("operation1");
}
} class Adapter extends Adaptee implements Target{
public void operation2() {
System.out.println("operation2");
}
} public class test {
public static void main(String[] args){
Target tar = new Adapter();
tar.operation1();
tar.operation2();
}
}
【对象的适配器】

与上面不同的是,这次并不是直接继承现有的类,而是把现有的类,作为一个内部的对象,进行调用。
package com.xingoo.test2;
interface Target{
public void operation1();
public void operation2();
}
class Adaptee{
public void operation1(){
System.out.println("operation1");
}
}
class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
public void operation1() {
adaptee.operation1();
}
public void operation2() {
System.out.println("operation2");
}
}
public class test {
public static void main(String[] args){
Target tar = new Adapter(new Adaptee());
tar.operation1();
tar.operation2();
}
}
使用场景
1 想使用一个已经存在的类,但是它的接口并不符合要求
2 想创建一个可以复用的类,这个类与其他的类可以协同工作
3 想使用已经存在的子类,但是不可能对每个子类都匹配他们的接口。因此对象适配器可以适配它的父类接口。(这个没理解,以后慢慢琢磨)
生活中的设计模式
俗话说,窈窕淑女君子好逑,最近看跑男,十分迷恋Baby。

但是,如果桃花运浅,身边只有凤姐,那么也不需要担心。

只需要简单的化妆化妆,PS一下,美女凤姐,依然无可替代!

虽然,没有AngleBaby,但是我们有凤姐,所以依然可以看到AngleBaby甜美的笑。

package com.xingoo.test3;
interface BeautifulGirl{
public void Smiling();
}
class UglyGirl{
public void Crying(){
System.out.println("我在哭泣...");
}
}
class ApplyCosmetics implements BeautifulGirl{
private UglyGirl girl;
public ApplyCosmetics(UglyGirl girl){
this.girl = girl;
}
public void Smiling() {
girl.Crying();
}
}
public class test {
public static void main(String[] args){
BeautifulGirl girl = new ApplyCosmetics(new UglyGirl());
girl.Smiling();
}
}
运行结果
我在哭泣...
【设计模式】—— 适配器模式Adapter的更多相关文章
- 设计模式 - 适配器模式(adapter pattern) 具体解释
适配器模式(adapter pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 适配器模式(adapter pattern): 将一个类的接 ...
- 设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 具体解释
适配器模式(adapter pattern) 枚举器和迭代器 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考适配器模式(adapter patter ...
- 设计模式--适配器模式Adapter(结构型)
一.适配器模式 适配器模式的主要作用是在新接口和老接口之间进行适配.将一个类的接口转换成客户端期望的另外一个接口.其实适配器模式有点无赖之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该通过重 ...
- 说说设计模式~适配器模式(Adapter)
返回目录 之前和大家一起谈了工厂模式和单例模式,今天来看一下另一种非常常用的模式,它就是适配器模式,第一次看到这个模式是通过“张逸”老师的“设计之道”这篇文章,在这里表adapter讲的很透彻,今天把 ...
- [工作中的设计模式]适配器模式adapter
一.模式解析 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 也就是说,如果已经写好了一个接口,但是又来了一种截然不同的接口,如 ...
- C#设计模式——适配器模式(Adapter Pattern)
一.概述在软件开发中,常常会想要复用一个已经存在的组件,但该组件的接口却与我们的需要不相符,这时我们可以创建一个适配器,在需复用的组件的接口和我们需要的接口间进行转换,从而能够正常的使用需复用的组件. ...
- 设计模式-适配器模式(Adapter)
简介: 适配器模式在我看来是最无聊的一种模式,因为他根本不是一种新的创意模式,而是一种不得已而为之的模式.就算不学适配器模式,在具体应用场景中也会自然而然的想到这种解决方案. 张三在英国留学时买了个笔 ...
- 大话设计模式--适配器模式 Adapter -- C++实现实例
1.适配器模式: 将一个类的接口转换为客户希望的另一个接口,使得原来由于接口不能一起工作的那些类一起工作. 适配器模式一般用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况. 适配器模式分 ...
- [设计模式]适配器模式Adapter
将一个类的接口转换成客户希望的另外一个接口. A d a p t e r模式使得原本 由于接口不兼容而不能一起工作的那些类可以一起工作.
- 设计模式(五)适配器模式Adapter(结构型)
设计模式(五)适配器模式Adapter(结构型) 1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相 ...
随机推荐
- Java UDP和TCP的区别
为什么要写这篇博客:是这样的,最近听朋友说,有不少公司面试的时候会问道TCP和UDp的却别,所以就写出一篇简单的来描述他们之间的区别,送给那些即将面试的朋友们. UDP: 1.UDP, a.将数据以及 ...
- 将myeclipse中不适用的插件禁用掉
转载地址http://blog.csdn.net/yuanboitliuyuan/article/details/7360553 去掉启动时不用的插件启动: 操作方法: windows->pre ...
- 对寄存器ESP和EBP的一些理解
PS:EBP是当前函数的存取指针.即存储或者读取数时的指针基地址:ESP就是当前函数的栈顶指针. 每一次发生函数的调用(主函数调用子函数)时,在被调用函数初始时,都会把当前函数(主函数)的EBP压栈, ...
- 20155210 Exp8 WEB基础实践
Exp8 WEB基础实践 Apache环境配置 apache是kali下的web服务器,通过访问ip地址+端口号+文件名称可以打开对应的网页. 输入命令vi /etc/apache2/ports.co ...
- 20155220 Exp2 后门原理与实践
20155220 Exp2 后门原理与实践 1.Windows获得Linux Shell 在windows下,打开CMD,使用ipconfig指令查看本机IP 然后使用ncat.exe程序,ncat. ...
- Package 设计3:数据源的提取和使用暂存
SSIS 设计系列: Package设计1:选择数据类型.暂存数据和并发 Package设计2:增量更新 Package 设计3:数据源的提取和使用暂存 在使用SSIS Package处理海量数据时, ...
- 账户控制器(AccountController)
账户控制器(AccountController) Account控制器提供了登录,注册,忘了密码和电子邮件激活页面功能. Layout模板视图 在Account视图文件夹中单独建设了模板文件: 登录页 ...
- 爬虫利器_you-get
用Python做爬虫也很久了,今天分享一个轻巧的爬虫库:you-get you-get 是用 Python3写成的视频,图片,音频下载工具,堪称盗链,爬虫神器.其支持的网站,都是直接破解其算法,直接算 ...
- 接口自动化学习--testNG
一个月一更的节奏~ testNg是一个开源的自动化测试框架..具体那些什么特点的就不想打了- -,贴张图(虽然也看不懂): 学习网站:https://www.yiibai.com/testng 一样是 ...
- 微软职位内部推荐-Senior Software Engineer - Front End
微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...