美文网首页python模式设计思想
python设计模式(五):适配器模式——各种类接口的合并

python设计模式(五):适配器模式——各种类接口的合并

作者: Python之战 | 来源:发表于2019-02-06 21:23 被阅读17次

    适配器可以理解为万能接口,各种类可以通过这个接口然后被调用,达到万能转换的效果。

    他的实现是以我们定义的适配器函数来分类,将各种类的不同方法注册到对应的分类函数中,调用的时候只需要使用分类名,这样就达到了适配所有类不同方法的效果.

    示例code

    class A:
        def a(self):
            print("我是A类的a方法")
    
    
    class B:
        def b(self):
            print("我是B类的b方法")
    
    
    class C:
        def c(self):
            print("我是C类的c方法")
    
    
    class Adapter:
    
        def __init__(self, classname, method):
            self.classname = classname
            self.__dict__update = method
        def __getattr__(self, attr):
            return getattr(self.classname, attr)
    
    
    
    def test():
        objects = []
        AA = A()
        objects.append(Adapter(AA, dict(test=AA.a)))
        BB = B()
        objects.append(Adapter(BB, dict(test=BB.b)))
        CC = C()
        objects.append(Adapter(CC, dict(test=CC.c)))
        for obj in objects:
            obj.test()
    
    test()
    

    核心思想是创建一个适配器类,通过dict将需要转化的类的方法注册到适配器,复写getattr使其在适配器函数查无方法的时候,执行getattr魔法方法。

    image

    适配器模式包含一下三个角色:

    目标抽象类:目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于C#语言不支持多重继承,所以它只能是接口。

    适配器类:它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。它是适配器模式的核心。

    适配者类:适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。

    相关文章

      网友评论

        本文标题:python设计模式(五):适配器模式——各种类接口的合并

        本文链接:https://www.haomeiwen.com/subject/bnbisqtx.html