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()
  • 相关阅读:
    JavaScript表单验证年龄
    PHP会话处理相关函数介绍
    SpringCloud(第一天)
    springboot加强
    SpringBoot的第一个demo
    ElasticSearch(分布式全文搜索引擎)
    Redis集群
    NoSql和Redis
    ElementUI实现CRUD(修改前端页面),前后台解决跨域问题
    SSM+ElementUI综合练习和Swagger和postman的使用(第二天)
  • 原文地址:https://www.cnblogs.com/loveprogramme/p/13149955.html
Copyright © 2011-2022 走看看