您的位置:首页 > 编程语言 > Python开发

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

2012-12-11 17:14 417 查看
基本原理请参考相关书籍,这里直接给实例

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

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





源代码
# -*- 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 division
from __future__ import print_function
from __future__ import unicode_literals
from 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
    pass

class 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
    pass

class Independent(TravelForm):
    """This class implements the Implementor interface and defines its concrete
    implementation.
    """
    def __init__(self, form="by myself"):
        super(Independent,self).__init__(form)
        pass

class 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
        pass

class DaLian(Destination):
    """This class extends the interface defined by Abstraction.
    """
    def __init__(self, info="Go to DaLian "):
        super(DaLian,self).__init__(info)
        pass

class 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()




#运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: