• python 设计模式 开篇 第1篇


    1. 设计模式的定义

    软件设计中普遍存在的 反复出现的 各种问题 所提出的解决方案

    首先,什么是软件设计?
    系统开发 项目开始的时候 需要做 需求分析 软件系统设计 软件建模 类的设计 接口的设计 等等。。。
    设计模式解决的就是 软件设计 过程中出现的问题 这类问题 经常出现 反复遇到 因此 前人就总结 出了 应对这类问题的23种套路
    感兴趣可以找一本书 《设计模式:可复用面向对象软件的基础》

    2. 面向对象基础

    设计模式 是 用于解决 软件建模过程中 设计类 设计接口 遇到的普遍问题,因此有必要复习一下 面向对象的知识
    三大特性:
    封装
    将 方法,属性 封装到一个类 中,通过对象来访问或者调用 类或对象的属性以及方法,类 里面的方法 有 私有方法 公有方法,这个知识点 可以自行了解一下
    继承
    实现类与类之间的代码的复用, 猫,狗,都有吃,睡的方法,既可以抽象 成一个 宠物的类
    多态
    这个 就有点复杂 不好解释

    3. 接口

    接口 这个词 对于开发人员来讲 是每天都听到的词 对外暴露的 供调用者 调用的方法
    定义:若干抽象方法的集合

    4 python 实现接口定义的两种常用方式

    4.1 通过 父类 中 抛出NotImplementedError 定义子类必须要实现的 方法 实现接口的定义

    这样定义接口的话 如果不调用 接口 只是 实例化一个对象的话 不会报错的 因此 接口的定义还不是很严密

    class Payment:
        def pay(self, money):
            raise NotImplementedError
    
    
    class Alipay(Payment):
    
        def pay(self, money):
            print("Ali payed %d" % money)
    
    
    class WechatPay:
    
        def pay(self, money):
            pass
    
    
    if __name__ == '__main__':
        p = Alipay()
        p.pay(100)
    

    4.2 通过 抽象类 实现接口的定义

    from abc import ABCMeta, abstractmethod
    
    
    class Payment(metaclass=ABCMeta):
    
        @abstractmethod
        def pay(self, money):
            pass
    
    
    class Alipay(Payment):
    
        def pay(self, money):
            print("Alipay pay %d" % money)
            
    
    class WechatPay(Payment):
    
        def pay(self, money):
            print("Wechat pay %d" % money)
    
    
    if __name__ == '__main__':
        p = Alipay()
        p.pay(100)
    
    
  • 相关阅读:
    网络时间校对
    OleVariant的本质
    GIT生成SSHKEY公钥放到服务器免密登录
    git 清除所有untracked file
    Linux命令 cat命令
    Linux如何通过命令查看日志文件的某几行(中间几行或最后几行)
    Git提交(PUSH)时记住密码 不用每次都输入密码
    arcgis10 arcmap10插件监控打开和保存文档
    arcmap10插件必看网页
    arcgis分解每一个部分为一个对象
  • 原文地址:https://www.cnblogs.com/cavalier-chen/p/14708329.html
Copyright © 2020-2023  润新知