23种设计模式之(八)适配器模式(python_c++实现)

23种设计模式之(八)适配器模式(Adapter)

本文主要介绍23种设计模式之适配器模式,附详细python/c++示例代码。
- 概念
- 应用场景
- 注意事项
- 代码示例
- 总结
- 代码链接


适配器模式(Adapter)

概念

适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。

GoF对适配器模式的定义是:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

应用场景

(1)想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直接去访问,这时创建一个适配器就能间接去访问这个类中的方法。

(2)我们有一个类,想将其设计为可重用的类(可被多处访问),我们可以创建适配器来将这个类来适配其他没有提供合适接口的类。

(3)想要使用接口中的某个或某些方法,但是接口中有太多方法,我们要使用时必须实现接口并实现其中的所有方法,可以使用抽象类来实现接口,并不对方法进行实现(仅置空),然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。这个抽象类就是适配器。

代码示例

C++代码示例

/************************************************************************/
/* 设计模式专题
/*
/* 适配器模式
/*
/* Author  : zzl
/*
/* 编程环境: window10 vs2010
/*
/* Date    : 20180915
/************************************************************************/

#include <iostream>

// Current18 
// Current220
// Adapter 

class  Current18v
{
public:
    virtual void useCurrent18v() = 0;
};

class  Current220v
{
public:
    void useCurrent220v()
    {
        printf("i am 220v,welcome to use\n");
    }
};

class Adapter : public Current18v
{
public:
    Adapter(Current220v *current)
    {
        m_current = current;
    }
    virtual void useCurrent18v()
    {
        printf("i am 18v adpter , i can adpte 220v \n");
        m_current->useCurrent220v();
    }
private:
    Current220v *m_current;
};


void main()
{
    Current220v     *current220v = NULL;
    Adapter         *adapter = NULL;

    current220v = new Current220v;
    adapter = new Adapter(current220v);
    adapter->useCurrent18v();

    delete current220v ;
    delete adapter;
}

python代码示例

# -*- coding: utf-8 -*-
###################################################################
# 设计模式专题
# 
# 适配器模式
# 
# Author  : zzl
# 
# 编程环境: window10 python2.7
# 
# Date    : 20180915
##################################################################

# Current18
# Current220
# Adapter

class Current18v(object):
    def use_current18v(self):
        pass


class Current220v(object):
    def use_current220v(self):
        print("i am 220v,welcome to use\n")


class Adapter(Current18v):
    def __init__(self, current):
        self.m_current = current

    def use_current18v(self):
        print("i am 18v adpter , i can adpte 220v")
        self.m_current.use_current220v()


if __name__ == "__main__":
    current220v = Current220v()
    adapter = Adapter(current220v)
    adapter.use_current18v()


源码链接

设计模式(八)适配器模式示例代码(python–c++)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值