刘刚刚的个人博客

HeadFirst 设计模式--适配器模式(Adapter Design Pattern)

创建时间:2022-12-14 22:28:18
更新时间:2024-03-17 17:45:33

适配器模式将一个接口转化为另外一个接口。

适配器模式将一个接口转化为另外一个接口。
需要注意:

  1. 当需要使用一个现有的类,但接口不符合你的需要时,就需要使用适配器
  2. 适配器有两种形式:对象适配器,类适配器。类适配器需要使用多重继承(java不支持)

书中通过鸭子和火鸡介绍了适配器模式:如果它走起路来像只鸭子,叫起来像只鸭子,那么它可能是一只包装了鸭子适配器的火鸡。

代码介绍了,通过类适配器,将火鸡适配为鸭子的方法


from abc import ABC, abstractmethod


class Duck(ABC):
    @abstractmethod
    def quack(self):
        pass

    @abstractmethod
    def fly(self):
        pass


class MallardDuck(Duck):
    '''
    绿头鸭
    '''
    def quack(self):
        print("Quack")

    def fly(self):
        print("I'm flying")


class Turkey(ABC):
    @abstractmethod
    def gobble(self):
        pass

    @abstractmethod
    def fly(self):
        pass


class WildTurkey(Turkey):
    '''
    野生火鸡
    '''
    def gobble(self):
        print("Gobble gobble")

    def fly(self):
        print("I'm flying a short distance")


class TurkeyAdapter(Duck):
    '''
    火鸡的适配器
    '''
    turkey = None

    def __init__(self, turkey: Turkey):
        self.turkey = turkey

    def quack(self):
        self.turkey.gobble()

    def fly(self):
        # 火鸡飞的短,因此多飞几次
        for i in range(0, 5):
            self.turkey.fly()

核心:通过适配器类将原对象进行包装,实现了类的方法在调用的时候的重新处理。

我的名片

昵称:shuta

职业:后台开发(python、php)

邮箱:648949076@qq.com

站点信息

建站时间: 2020/2/19
网站程序: ANTD PRO VUE + TP6.0
晋ICP备18007778号