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)
    
    
  • 相关阅读:
    集训总结
    目前世界四大杀毒软件各自的特点
    俺们家老祖宗是搞音乐的
    灰姑娘
    自欺欺人的ie7pro去掉msnlivespaces的顶部广告图片
    利用工具及api接口写博文
    在C#中,异步调用的WebService、Socket及新建线程中操作主线程中UI的方法
    Ubuntu 12.04下载址
    js与php互传参数
    php使用strstr函数 ,判断字符串A中是否含有字符串B
  • 原文地址:https://www.cnblogs.com/cavalier-chen/p/14708329.html
Copyright © 2011-2022 走看看