频道栏目
首页 > 程序开发 > Web开发 > Python > 正文
python设计模式之桥接模式
2017-09-06 09:41:44         来源:Rick的博客  
收藏   我要投稿

python设计模式之桥接模式

意图

将抽象部分与它的实现部分分离,使它们都可以独立地变化

适用性

你不希望在抽象和它的实现部分之间有一个固定的绑定关系,比如可能在程序运行时刻,实现部分应可以被选择或者切换 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充,这时Bridge 模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充

例子

以画圆为例,如下

# -*- coding:utf-8 -*-

__author__ = 'Ricky'


class DrawingAPI1(object):
    """
    实现类1
    """
    def draw_circle(self, x, y, radius):
        print ('API1.cicle at {}:{} radius {}'.format(x, y, radius))


class DrawingAPI2(object):
    """
    实现类2
    """
    def draw_circle(self, x, y, radius):
        print ('API2.cicle at {}:{} radius {}'.format(x, y, radius))


class CicleShape(object):
    """
    抽象类
    """
    def __init__(self, x, y, radius, drawing_api):
        self._x = x
        self._y = y
        self._radius = radius
        self._drawing_api = drawing_api

    def draw(self):
        """
        对外提供公用接口
        :return:
        """
        self._drawing_api.draw_circle(self._x, self._y, self._radius)

    def scale(self, pct):
        """
        设置大小
        :param pct:
        :return:
        """
        self._radius *= pct


if __name__ == '__main__':
    shapes = (
        CicleShape(1, 2, 3, DrawingAPI1()),
        CicleShape(5, 7, 11, DrawingAPI2()),
    )

    for shape in shapes:
        shape.scale(2.5)
        shape.draw()

output:
API1.cicle at 1:2 radius 7.5
API2.cicle at 5:7 radius 27.5
点击复制链接 与好友分享!回本站首页
上一篇:python:字符串基本用法及相关函数
下一篇:python中csv文件的若干读写方法
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站