zoukankan      html  css  js  c++  java
  • 常见的设计模型(python)——建造者模型

    源码故事
    混沌初开,自盘古开天,人间无一物。
    忽一日,天出异象,眺望远方,定睛一看,一位脚踏七彩祥云,手捧橡皮泥,的仙人出现了(后世称为女娲),女娲有个idea,如下:
    人间如此荒凉,何不造一些活物。
    说是实那时快,女娲已经造好了人类的原型(有双手,双脚,头,身体)
    女娲愣一想,人类不能都一样,肯定有胖有瘦(于是基于人类外形,又创造了胖瘦原型)
    编不下去了^_^
    本文主要讲python常见的设计模式 --- 建造者模式
    上代码...
    源码
    from abc import ABCMeta, abstractmethod
    
    
    class Person(metaclass=ABCMeta):
        """
        导入抽象类,抽象装饰器
        ps:抽象类(实现基本接口,原型)不能被实例化,只能继承(继承类中实现抽象方法),
        否则 TypeError: Can't instantiate abstract class...
        """
    
        @abstractmethod
        def left_hand(self):
            pass
    
        @abstractmethod
        def right_hand(self):
            pass
    
        @abstractmethod
        def left_foot(self):
            pass
    
        @abstractmethod
        def right_foot(self):
            pass
    
        @abstractmethod
        def head(self):
            pass
    
        @abstractmethod
        def body(self):
            pass
    
    
    class Fat(Person):
        """胖人,继承基类(人类)"""
    
        def left_hand(self):
            # 实现具体方法
            print("胖左爪")
    
        def right_hand(self):
            print("胖左爪")
    
        def left_foot(self):
            print("胖左jio")
    
        def right_foot(self):
            print("胖右jio")
    
        def head(self):
            print("胖头")
    
        def body(self):
            print("胖身体")
    
    
    class Thin(Person):
        """瘦人,继承基类(人类)"""
    
        def left_hand(self):
            print("瘦左爪")
    
        def right_hand(self):
            print("瘦左爪")
    
        def left_foot(self):
            print("瘦左jio")
    
        def right_foot(self):
            print("瘦右jio")
    
        def head(self):
            print("瘦头")
    
        def body(self):
            print("瘦身体")
    
    
    class WomanGod:
        """准备工作做完,女娲开始造人"""
    
        def __init__(self, person):
            # 这个传递实例对象(胖人或瘦人)
            self.person = person
    
        def make(self):
            # 女娲开始造(胖人或瘦人)的具体部位
            self.person.left_hand()
            self.person.right_hand()
            self.person.left_foot()
            self.person.right_foot()
            self.person.head()
            self.person.body()
    
    
    if __name__ == "__main__":
        thin = Thin()  # 胖人实例
        fat = Fat()  # 瘦人实例
        woman_god = WomanGod  # 女娲
        woman_god(thin).make()  # 女娲拿瘦人实例开造
        woman_god(fat).make()  # 女娲拿胖人实例开造
    
    

    最后

    下一篇 工厂模型

     
  • 相关阅读:
    基于.NET平台常用的框架整理
    简单的linq语法
    Newtonsoft.Json高级用法
    C# 语言历史版本特性(C# 1.0到C# 7.1汇总更新)
    HTML URL 编码
    sql(SqlServer)编程基本语法
    正则表达式
    添加vs模板注释
    js实现无刷新表单提交文件,将ajax请求转换为form请求方法
    HTML5 手机端动态适配
  • 原文地址:https://www.cnblogs.com/jum-bolg/p/13364133.html
Copyright © 2011-2022 走看看