设计模式十一(桥接模式,python 语言实现)

来源:互联网 发布:小额贷款全部软件 编辑:程序博客网 时间:2024/05/22 08:24

基本原理请参考相关书籍,这里直接给实例

假期旅游 从目的地角度可以分为 上海和大连,从方式角度可以分为跟团和独体

桥接模式把这两种分类连接起来可以进行选择。

 

源代码# -*- coding: utf-8 -*-######################################################## # tour.py# Python implementation of the Class DaLian# Generated by Enterprise Architect# Created on:      11-十二月-2012 16:53:52# #######################################################from __future__ import divisionfrom __future__ import print_functionfrom __future__ import unicode_literalsfrom future_builtins import *    class TravelForm(object):    """This class defines the interface for implementation classes.    """    def __init__(self, form="stay at home"):        self.form=form        pass    def GetForm(self):        return self.form        pass    passclass Group(TravelForm):    """This class implements the Implementor interface and defines its concrete    implementation.    """    def __init__(self, form="by group"):        super(Group,self).__init__(form)                pass    passclass Independent(TravelForm):    """This class implements the Implementor interface and defines its concrete    implementation.    """    def __init__(self, form="by myself"):        super(Independent,self).__init__(form)        passclass Destination(object):    """This class (a) defines the abstraction's interface, and (b) maintains a    reference to an object of type Implementor.    """    m_TravelForm= TravelForm()    def __init__(self, info):        self.info=info        pass    def GetInfo(self):        # imp->Operation();        return print(self.info + " " +self.form.GetForm())        pass    def SetForm(self, form):        self.form=form        passclass DaLian(Destination):    """This class extends the interface defined by Abstraction.    """    def __init__(self, info="Go to DaLian "):        super(DaLian,self).__init__(info)        passclass ShangHai(Destination):    """This class extends the interface defined by Abstraction.    """    def __init__(self, info="Go to ShangHai"):        super(ShangHai,self).__init__(info)        pass#客户端if(__name__=="__main__"):        destination=ShangHai()    destination.SetForm(Group())    destination.GetInfo()            destination=DaLian()    destination.SetForm(Independent())    destination.GetInfo()    


 

#运行结果

原创粉丝点击