桥接模式(python)

来源:互联网 发布:哪个软件买书最便宜 编辑:程序博客网 时间:2024/05/22 05:08
"""桥接模式把对象的抽象部分和实现部分分离开来,使他们能独立变化如果一个对象可以进行多角度分类,那么就把多角度分离出来,让他们独立变化,减少耦合"""from abc import ABCMeta, abstractmethodclass Skin(object):    __metaclass__ = ABCMeta    def __init__(self):        pass    @abstractmethod    def has_skin(self):        passclass YellowSkin(Skin):    def __init__(self):        super(YellowSkin, self).__init__()    def has_skin(self):        print("有黄皮肤")class WhiteSkin(Skin):    def __init__(self):        super(WhiteSkin, self).__init__()    def has_skin(self):        print("有白皮肤")class Old(object):    __metaclass__ = ABCMeta    def __init__(self):        pass    @abstractmethod    def is_old(self):        passclass Kid(Old):    def __init__(self):        super(Kid, self).__init__()    def is_old(self):        print("是小孩")class Older(Old):    def __init__(self):        super(Older, self).__init__()    def is_old(self):        print("是老人")class AreaPeoPle(object):    __metaclass__ = ABCMeta    def __init__(self, skin=None, old=None):        self.skin = skin        self.old = old    def set_skin(self, skin):        self.skin = skin    def set_old(self, old):        self.old = old    @abstractmethod    def show(self):        passclass Chinese(AreaPeoPle):    def __init__(self, skin=None, old=None):        super(Chinese, self).__init__(skin, old)    def show(self):        print("我是一个中国人")        self.skin.has_skin()        self.old.is_old()        print("")class American(AreaPeoPle):    def __init__(self, skin=None, old=None):        super(American, self).__init__(skin, old)    def show(self):        print("我是一个美国人")        self.skin.has_skin()        self.old.is_old()        print("")if __name__ == '__main__':    yellow = YellowSkin()    white = WhiteSkin()    kid = Kid()    older = Older()    chinese = Chinese(yellow, kid)    chinese.show()    american = American(white, older)    american.show()
0 0
原创粉丝点击