zoukankan      html  css  js  c++  java
  • 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)
    
    
  • 相关阅读:
    为什么你改了我还看不见?
    一条SQL更新语句是如何执行的?
    一条SQL查询语句是如何执行的?
    为什么学习mysql
    读书并不只是向一个方向前进——《代码之外的生存指南》
    RabbitMQ在C#中的使用
    RFID技术与条形码技术的对比
    射频识别技术RFID
    通过IIS不能连接远程数据库的问题
    老板不断加需求、改需求的四种应对方法
  • 原文地址:https://www.cnblogs.com/cavalier-chen/p/14708329.html
Copyright © 2011-2022 走看看