head first 设计模式笔记7-适配器模式与外观模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
这个模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容。这可以让客户从实现的接口解耦。如果在一段时间之后,我们想要改变接口,适配器可以将改变的部分封装起来,客户不必为了应对不同的接口而每次跟着修改。


Duck
/**
* @author oy
* @date 2019年9月8日 下午3:45:05
* @version 1.0.0
*/
public interface Duck {
public void quack();
public void fly();
}
Turkey
public interface Turkey {
// 火鸡不会呱呱叫,只会咯咯叫
public void gobble();
// 火鸡会飞,只是飞不远
public void fly();
}
WildTurkey
public class WildTurkey implements Turkey {
@Override
public void gobble() {
System.out.println("Gobble gobble...");
}
@Override
public void fly() {
System.out.println("I'm flying a short distance");
}
}
TurkeyAdapter
/**
* 包装一只火鸡,使之看起来像是鸭子
* @author oy
* @date 2019年9月8日 下午3:53:40
* @version 1.0.0
*/
public class TurkeyAdapter implements Duck {
Turkey turkey; public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
} @Override
public void quack() {
turkey.gobble();
} @Override
public void fly() {
turkey.fly();
}
}
测试:
public static void main(String[] args) {
TurkeyAdapter trukeyAdapter = new TurkeyAdapter(new WildTurkey());
trukeyAdapter.quack();
trukeyAdapter.fly();
}
head first 设计模式笔记7-适配器模式与外观模式的更多相关文章
- 【HeadFirst设计模式】7.适配器模式与外观模式
今晚学习完第七章,顺便做一下知识备忘. 适配器模模式: 定义:将一个类的接口,转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间. 对象适配器: 类适配器: 外观模式: 提供了一个统一 ...
- 《Head First 设计模式》之适配器模式与外观模式
适配器模式(Adapter) 适配器(adapter-pattern):将一个类的接口,转换成客户期望的另一个接口.适配器让原来接口不兼容的类可以合作无间.两种形式: 对象适配器(组合) 类适配器(多 ...
- Head First 设计模式之适配器模式与外观模式
Head First设计模式之适配器模式与外观模式 前言: 之前讲过装饰者模式,将对象包装起来并赋予新的职责,这一章我们也会将对象进行包装,只不过是让它们看起来不像自己而像是别的东西.这样就可以在设计 ...
- 适配器模式和外观模式(head first设计模式——6)
为什么要把适配器模式和外观模式放在同一篇文章中,主要是其相对前面的几个模式来讲会简单些并且具有相似之处.下面就分别通过例子来看理解一下两种模式,然后再进行对其进行比较. 一.适配器模式 1.1适配器模 ...
- .NET设计模式(12):外观模式(Façade Pattern)(转)
概述 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化.那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依 ...
- Java 设计模式系列(十)外观模式
Java 设计模式系列(十)外观模式 门面模式(Facade):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这 ...
- 设计模式之第7章-外观模式(Java实现)
设计模式之第7章-外观模式(Java实现) “鱼哥,知道怎么把大象装进冰箱里面么?”(作者按:这么简单的问题还想考我,早了几百年吧.)“把大象装进冰箱里,一共需要三步:第一步,把冰箱门打开:第二步,把 ...
- headfirst设计模式(8)—适配器模式与外观模式
前言 这一章主要讲2个模式,一个是,适配器模式(负责将一个类的接口适配成用户所期待的),另外一个是外观模式(为子系统提供一个共同的对外接口),看完的第一反应是,为什么要把它们两放在同一章,难道它们有什 ...
- 【设计模式】结构型03外观模式(Facade Pattern)
[设计模式]结构型02装饰模式(Decorator Pattern) 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 主要解决:降低访问 ...
- 设计模式学习-使用go实现外观模式
外观模式 定义 适用范围 代码实现 优点 缺点 关于接口粒度的思考 参考 外观模式 定义 外观模式也叫门面模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接 ...
随机推荐
- TCP三次握手笔记
先了解OSI七层模型(OSI是Open System Interconnect的缩写,意为开放式系统互联) OSI层 功能 应用层 文件传输,电子邮件,文件服务,虚拟终端 表示层 数据格式化,代码转换 ...
- Java小知识----List复制:浅拷贝与深拷贝
原文地址: https://blog.csdn.net/demonliuhui/article/details/54572908 List浅拷贝 众所周知,list本质上是数组,而数组的是以地址的形式 ...
- mysql中的安全模式(sql_safe_updates)
什么是安全模式 在mysql中,如果在update和delete没有加上where条件,数据将会全部修改.不只是初识mysql的开发者会遇到这个问题,工作有一定经验的工程师难免也会忘记写入where条 ...
- Ajax异步上传在SSM框架中的应用
最近在做毕业设计,由于毕设中要实现图片上传和视频上传的功能.突然发现原来的Form表单中的file已经满足不了我了,于是在一番折腾之后终于让我找到了一个简便的上传方式.下面来和大家分享一下我的过程. ...
- POJ - 1149 PIGS (建图思维+最大流)
(点击查看原题) 题目分析 (以下均为 Edelweiss 大佬的思路,博主承认自己写不了这么好,但是学习的心促使我记录下这个好题的写法,所以代码是我写的) [题目大意] 有 M 个猪圈,每个猪圈里初 ...
- # 江西ccpc省赛-waves-(DP做法)
江西ccpc省赛-waves-(DP做法) 题链:http://acm.hdu.edu.cn/showproblem.php?pid=6570 题意:给你长度为N,1≤N≤100000的一个数组,其中 ...
- 编译LAMP部署动态网站环境
LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Apache=2.4.33 --&g ...
- vue+element 使用Export2Excel导出表格组件
下载表格组件是根据我自己的业务需求来封装的 使用的是vue中 xlsx 的插件,需要安装新的依赖及配置 仅供参考 不保证和你百分百匹配 安装依赖 npm install -S file-saver x ...
- 上传模板到SAP资源库
事物代码:SMW0 -WEB资源库 如果创建后上载本地模板报错,说明没有维护文件类型,需要在导航栏的设置里维护MIME类型添加新的文件后缀名 维护好后再上载模板 ABAP下载模板:以下FORM可以参考 ...
- python中format所有用法
平时只用参数匹配,偶尔看到别人的format用法楞住没反应过来,遂记下 #通过位置 print '{0},{1}'.format('hehe',20) print '{},{}'.format('he ...