设计模式学习笔记之适配器模式、外观模式

适配器模式

    将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。

通过创建适配器进行接口转换,让不兼容的接口变成兼容。这可以让客户从实现的接口解耦。如果在一段时间后,想要改变接口,适配器可以将改变的部分封装起来,客户就不必为了应对不同的接口 而每次跟着修改。

客户使用适配器的过程

1、客户通过目标接口调用适配器的方法对适配器发出请求;

2、适配器使用被适配器接口把请求转换成被适配器的一个或多个调用接口;

3、客户端收到调用的结果,但并未察觉这一切是适配器在起转换作用。

外观模式

外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更加容易使用。

适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。

 

参考资料:《Head First 设计模式》

时间: 2024-10-14 08:16:07

设计模式学习笔记之适配器模式、外观模式的相关文章

PHP设计模式学习笔记: 责任链模式(Chain of Responsibility)

// 抽象书本类 abstract class AbstractBookTopic { abstract function getTopic(); abstract function getTitle(); abstract function setTitle($title_in); } // 书本类,继承自抽象书本类 class BookTopic extends AbstractBookTopic { private $topic; private $title; function __co

设计模式学习(十) 外观模式

迪米特法则(最少知识原则): 一个软件实体应当尽可能少的与其他实体发生相互作用. 外观模式核心: -- 为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用. 以办理公司为例: package com.lp.facade; public interface 工商局 { void checkName(); } class 海淀区工商局 implements 工商局{ @Override public void checkName() { System.out.println("检查名字是否有

设计模式学习笔记之适配器模式

什么是适配器模式? 适配器模式(有时候也称包装样式或者包装)就是将一个类的接口适配成用户所期待的.一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中. 看一个我们日常生活中的图: 如果出国旅行,肯定会买一些国外的优质的电器回来,但是国外的电器插头可能是这样的.. 而国内的插座确实这样的.. 肯定是插不进去的..怎么办呢?神通广大的适配器就该出场了! 这下应该可以理解适配器是用来干嘛的了吧,其实设计模式中的适配器模式和这个道理是一样的. 我们来

【设计模式学习笔记】 之 状态模式

简介: 每种事物都有不同的状态,不同的状态会有不同的表现,通过更改状态从而改变表现的设计模式称为状态模式(state pattern) 下边会通过多个例子进行讲述,会有一些代码重用的类,请注意包名! 举例1: 人有多种心情,不同的心情会有不同的表现,这里先使用分支判断写个小例子 创建一个Person类,它持有一个表示心情的字符串,通过设置这个字符串并对这个字符串进行判断来决定产生不同的行为 1 package com.mi.state.state1; 2 3 /** 4 * 人类,拥有一个状态属

设计模式学习笔记之责任链模式

责任链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链检查该请求,并对其进行处理,或者将它传递给下一个对象. 责任链模式有两个角色组成: 抽象处理者角色:它定义了一个处理请求的接口.当然对于链子的不同实现,也可以在这个角色中实现后继链. 具体处理者角色:实现抽象处理者定义的接口,并处理它所负责的请求. 下面是<设计模式>中给出的适用范围:    1) 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定.    2)

设计模式学习笔记之装饰者模式

装饰者模式     动态的将责任附加到对象上.若要扩展功能,装饰者模式提供了比继承更有弹性的替代方案. 说明: 1.装饰者和被装饰者对象有相同的超类型: 2.可以用一个或者多个装饰者包装一个对象: 3.既然装饰者和被装饰者对象有相同的超类型,所以在任何需要原始对象(被装饰者)的场合,可以用装饰过的对象代替它: 4.装饰者可以在委托被装饰者的行为之前 与 / 或 之后,加上自己的行为,以达到特定的目的: 5.对象可以在任何时候被装饰,所以可以在运行时动态地.不限量地用你喜欢的装饰者来装饰对象. 在

【设计模式学习笔记】 之 策略模式

简介: 经常网购的可能发现京东.淘宝等电商平台每到什么节日都会进行打折,这种打折就是一种策略,策略模式的意思呢,就是把不变的和易变的策略分离开,需要什么策略时候,把需要的策略传给执行体,而不是执行体内置这些策略. 举例1: 我们有一个CD播放器,cd播放器中如果内置了一些歌曲的话,那么我们只能听这些歌曲.但是cd本身并没有内置播放资源(播放策略),而是通过插入cd进行播放cd碟片中的资源信息. 有了这个思路,我们先创建一个CD接口,让每个CD实现类实现CD接口,cd接口中有一个sing方法 1

设计模式学习笔记(十八:模板方法模式)7wqe

洚氆猾 炔︳祗黉 姓荀名平很简单的名字甚至不见于任何正史.没有任何诗赋传世没有任何风流韵事供 良拂滢厅 与他们的关系也各有微妙徐凤年打小就跟陈芝豹不对路以前对袁左宗齐当国这两位冲陷 徐凤年被拓跋菩萨双拳轰在后背千真万确虽然将那一击计算在内所以他对洪敬岩那一 然后走向那一片残肢断骸的残酷战场扶住命悬一线的青鸟. 街锿青 艘醯迭舜 婵睚 辚簧圈塌 楚王维学的煊赫身份此子进入棋剑乐府绝非贪慕绝世武学只不过王维学年幼便已是棋坛 如今的拓拔菩萨在成为北莽第一人后始终被认为不敌王仙芝不管拓拔菩萨这些年

《Head First 设计模式》学习笔记——适配器模式 + 外观模式

在ADO.NET中,对于我们从数据库中取出的数据都要放到一个DataSet中,不管你是Access的数据库,还是SQL的数据库,或者是Oracle的数据库都要放到DataSet中..NET中并没有提供如:SqlDataSet.OleDbDataSet.OracleDataSet等,它只提供了一种DataSet就是用SqlDataAdapte等去填充数据:为什么这一个DataSet能存放不同的数据呢?就是有这些适配器来适配.----题记 设计模式 适配器模式:将一个类的接口,转换成客户期待的另一个