文档章节

Design Pattern - Adapter

woodo
 woodo
发布于 2014/04/17 15:24
字数 328
阅读 52
收藏 2

评价:这是一个战斗级别的Pattern,多用于系统整合阶段的软件设计。它形式上和Bridge类似的地方,但是很显然Adapter目标接口转换,说白了是为了应用,基于existing的功能完成其他功能需求。

而Bridge目标于大规模的接口和实现的隔离,它使软件系统更加解藕(decouple),这是软件设计的终极目标,所以我说它是战役级别的Pattern


适用场景

  1. 使用已经存在的类,或者第三方的类,但是需要集成到现在的统一接口设计。

  2. 用于整合一个与现有设计不兼容的类,使用此模式来整合。

// Adapter.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class Adaptee
{
public:
	void SpecialMethod() const {
		cout << "this is constant component without source code" << endl;
	}
};

class ITarget
{
public:
	virtual void Method() = 0;
};

class TargetDerive : public ITarget
{
public:
	void Method() {
		cout << "this is a normal derive implementation." << endl;
	}
};

class TargetAdapter : public ITarget
{
	// the adaptee object
	Adaptee _adaptee;
public:
	void Method(){
		_adaptee.SpecialMethod();
	}

};


int main(int argc, void* argv[])
{
	TargetDerive normalDerive;
	normalDerive.Method();

	//Adapter client for consumer
	TargetAdapter adapter;
	adapter.Method();

	return 0;
}


© 著作权归作者所有

woodo
粉丝 5
博文 57
码字总数 32118
作品 0
朝阳
高级程序员
私信 提问
iOS Design Patterns Excerpt

How MVC works MVC is a design pattern that enforces the separation between the input, processing, and output of an application. To this end, an application is divided into three......

Herbert77
2015/09/02
32
0
常见的几种设计模式

工厂模式 代替new操作的一种模式,可以屏蔽掉一些(不适合放在构造函数中的)初始化的细节(如赋值,查询数据库等),同时也易于后期代码的统一维护 单例模式 适用于在整个jvm中只需要有一个实...

skyfly
2016/06/19
8
0
基于docker的设计模式

一. 面向对象和设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证...

skywalker
2017/10/10
0
0
list of most-frequently-used design patterns

FROM HEAD FIRST DESIGN PATTERNS strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independ......

ChenQi
2011/12/19
80
0
嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录

版权声明:进步始于交流,收获源于分享!转载请保留原文出处,谢谢! https://blog.csdn.net/ZCShouCSDN/article/details/80217199 唉   工作三年有余,一直在搞嵌入式。准确的说从大学开始...

ZCShouCSDN
2018/09/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.2K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部