`
caiwb1990
  • 浏览: 317668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式(3)- 适配器模式

阅读更多
    适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    它包括类适配器和对象适配器,本文针对的是对象适配器。
    举个例子,在STL中就用到了适配器模式。STL实现了一种数据结构,称为双端队列(deque),支持前后两段的插入与删除。STL实现栈和队列时,没有从头开始定义它们,而是直接使用双端队列实现的。这里双端队列就扮演了适配器的角色。队列用到了它的后端插入,前端删除。而栈用到了它的后端插入,后端删除。假设栈和队列都是一种顺序容器,有两种操作:压入和弹出。

    下面给出相应的UML图


根据上面的UML图,很容易给出实现。
//双端队列
class Deque
{
public:
	void push_back(int x) { cout<<"Deque push_back"<<endl; }
	void push_front(int x) { cout<<"Deque push_front"<<endl; }
	void pop_back() { cout<<"Deque pop_back"<<endl; }
	void pop_front() { cout<<"Deque pop_front"<<endl; }
};
//顺序容器
class Sequence
{
public:
	virtual void push(int x) = 0;
	virtual void pop() = 0;
};
//栈
class Stack: public Sequence
{
public:
	void push(int x) { deque.push_back(x); }
	void pop() { deque.pop_back(); }
private:
	Deque deque; //双端队列
};
//队列
class Queue: public Sequence
{
public:
	void push(int x) { deque.push_back(x); }
	void pop() { deque.pop_front(); }
private:
	Deque deque; //双端队列
};


使用方式如下:

int main()
{
	Sequence *s1 = new Stack();
	Sequence *s2 = new Queue();
	s1->push(1); s1->pop();
	s2->push(1); s2->pop();
	delete s1; delete s2;
	return 0;
}














  • 大小: 4.8 KB
分享到:
评论

相关推荐

    23种设计模式--适配器模式

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,这种模式常被用来解决旧系统与新系统、第三方库或者不同组件之间的接口不匹配问题。适配器模式的核心思想是通过创建一个新的类...

    设计模式--适配器模式java例子

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java编程中,这种模式常用于解决新旧系统之间的对接问题,或者是引入第三方库时接口不匹配的情况。适配器模式的核心思想是创建一个新的类...

    设计模式--适配器模式

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    JAVA-设计模式-结构型模式-适配器模式

    JAVA-设计模式-结构型模式-适配器模式

    设计模式之--适配器模式

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    java设计模式--适配器设计

    在软件开发中,设计模式是一种解决常见问题的模板或最佳实践,它被广泛应用于创建可维护、可扩展和高效的应用程序。适配器设计模式是其中一种,它允许不兼容的类之间进行通信,通过创建一个适配器来转换一个类的接口...

    设计模式 - 适配器模式(C++实例)

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...

    JAVA设计模式--适配器模式借鉴.pdf

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式常用于将已有类的行为调整为符合新接口的需求,或者将第三方库的类与自己的代码进行集成。在给定的例子中,展示了如何在...

    设计模式-适配器模式

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是解决不同接口或类之间不兼容的问题,使得原本无法协同工作的组件能够协同工作。在这个“设计模式-适配器模式”的资源中,我们可以深入理解...

    c++设计模式-结构型模式-适配器模式

    c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

    java常用设计模式-适配器模式

    java常用设计模式-适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行通信。这种模式可以在不修改现有代码的情况下重用现有类,并且可以使不兼容的接口之间进行通信。 ...

    PHP5设计模式-适配器模式实现

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...

    JAVA设计模式--适配器模式[参照].pdf

    适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式常用于解决已有类库或对象与新系统需求不匹配的问题。通过适配器,我们可以复用现有的类,而无需修改其源代码,同时也能够...

    设计模式实验报告-适配器模式.docx

    如图3所示的类适配器模式类图,包括`Target`接口、`Adaptee`类和`ClassAdapter`类。其中,`ClassAdapter`继承了`Adaptee`并实现了`Target`接口。 **核心代码** - `ClassAdapter.java`:实现类适配器。 ```java ...

    设计模式-适配器模式(讲解及其实现代码)

    适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在处理系统集成、遗留代码重用以及不同接口之间兼容性问题时。适配器模式的主要目的是将两个不兼容的接口融合在一起,使得原本无法直接协作...

    设计模式 - 适配器

    3. 适配器模式降低了类之间的耦合度,使得系统更加灵活。 然而,适配器模式也存在一些缺点: 1. 如果适配器类过于复杂,可能会增加系统的复杂性。 2. 当适配器过多时,可能导致系统中的类数量急剧增加,影响系统...

    无标题设计模式-适配器模式

    适配器模式是一种设计模式,属于结构型模式,它的主要目的是解决接口不兼容的问题,使得原本因接口不匹配而无法协作的类能够协同工作。适配器模式通过创建一个新的适配器类,将一个类的接口转换为客户期望的另一个...

    设计模式结构型-适配器

    **适配器模式**(Adapter Pattern)属于结构型设计模式,它的目的是将一个接口转换成客户希望的另一个接口,从而使得原本由于接口不兼容而无法一起工作的那些类能够合作。适配器模式有两种形式:类适配器模式和对象...

    8.设计模式-适配器模式1

    适配器模式是一种软件设计模式,它允许不同的接口或类之间进行通信,即使它们的接口不兼容。适配器模式的核心思想是通过创建一个适配器类,将原有类的接口转换为客户期望的接口,从而使得原本无法协作的类能够协同...

    设计模式:结构型-适配器模式

    适配器模式是一种结构型设计模式,用于解决两个不兼容接口之间的问题,它充当了两者之间的桥梁。适配器模式可以分为三种类型:类适配器模式、对象适配器模式和接口适配器模式。 类适配器模式中,适配器类通过继承...

Global site tag (gtag.js) - Google Analytics