zoukankan      html  css  js  c++  java
  • 设计模式之桥接模式

    from abc import ABCMeta, abstractmethod
    
    
    """
    桥接模式:将抽象与实现解耦,使得他们可以毒力的变化
    桥接模式关注的是抽象和实现的分离,使得它们可以独立发展;
    桥接模式是结构性模式,侧重于软件结构。而策略模式关注的是对算法、规则的封装,
    使得算法可以独立于使用它的用户而变化;策略模式是行为模式,侧重于对象行为。
    """
    class Shape(metaclass=ABCMeta):
        """形状"""
        def __init__(self, color):
            self._color = color
    
        @abstractmethod
        def getShapeType(self):
            pass
    
        def getShapeInfo(self):
            return self._color.getColor() + "" + self.getShapeType()
    
    
    class Rectange(Shape):
        """矩形"""
        def __init__(self, color):
            super().__init__(color)
    
        def getShapeType(self):
            return "矩形"
    
    
    class Ellipse(Shape):
        """椭圆"""
        def __init__(self, color):
            super().__init__(color)
    
        def getShapeType(self):
            return "椭圆"
    
    
    class Color(metaclass=ABCMeta):
        @abstractmethod
        def getColor(self):
            pass
    
    
    class Red(Color):
        """红色"""
        def getColor(self):
            return "红色"
    
    
    class Green(Color):
        """绿色"""
        def getColor(self):
            return "绿色"
    
    
    def testShape():
        redRect = Rectange(Red())
        print(redRect.getShapeInfo())
        greenRect = Rectange(Green())
        print(greenRect.getShapeInfo())
    
    
    if __name__ == "__main__":
        testShape()
  • 相关阅读:
    分布式训练基本原理
    服务化部署框架Paddle Serving
    Paddle Inference原生推理库
    源码编译优化
    推理部署概述
    深度学习模型组网
    在这里
    什么是响应式编程,为什么使用它?
    时间管理:如何充分利用你的24小时-吉姆·兰德尔.pdf
    Win10激活工具
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13149955.html
Copyright © 2011-2022 走看看