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()
  • 相关阅读:
    详解用em替换px
    js判断是否为ie浏览器
    nth-child()选择器小结
    HTML5之canvas
    MQTT-SN协议乱翻之消息格式
    MQTT-SN协议乱翻之简要介绍
    MQTT 3.1.1,值得升级的6个新特性
    MQTT 3.1协议非严肃反思录
    MQTT协议笔记之mqtt.io项目HTTP协议支持
    MQTT协议笔记之mqtt.io项目Websocket协议支持
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13149955.html
Copyright © 2011-2022 走看看