IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【python设计模式0】前言 -> 正文阅读

[Python知识库]【python设计模式0】前言

P1 设计模式介绍
1.1 面向对象

  1. 三大特性:封装、继承、多态
  2. 接口:若干抽象方法的集合
  3. python 抽象方法的实现

定义抽象方法

########### 方法1 使用主动抛出异常raise#############
class Payment1:
    def pay(self, money):
        raise NotImplementedError

class Alipay1(Payment1):
    # 不实现此方法进行调用的时候就会出错
    def pay(self, money):
        print('支付宝1支付%s'%money)

#方法1不写pay方法,那么就会调用父类方法,就会出现差错
p = Alipay1()
p.pay(100)

########### 方法2 使用abc#############
from abc import ABCMeta, abstractmethod

class Payment2(metaclass=ABCMeta):
    @abstractmethod
    def pay(self, money):
        pass

class Alipay2(Payment2):
    def pay(self, money):
        print('支付宝2支付%s'%money)
# 子类不写pay方法在调用创建对象方法时就会报错
	p = Alipay2()
	p.pay(100)
	1.2 面向对象设计原则
	1.2.1 简介
	1. 程序中的模块分类
	抽象模块-》底层模块-》高层模块
	抽象模块:就是抽象接口
	底层模块:定义的父类
	高层模块:定义的字类

1.2.2 面向对象设计SOLID原则

  1. 开放封闭原则:对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展

  2. 里氏替换原则:所有引用父类的地方必须能透明地使用其子类的的对象

    里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)
    女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》
    (Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立
    (Inheritance should ensure that any property proved about supertype objects also holds for 
    subtype objects)。
    
    # 父类
    class Person:
    		# 定义一个方法,返回的类型是整型
        def show_name(slef, name):
            print("报自己的名字")
            return 1
            
    #子类继承父类的时候需要保证继承的方法,参数与类型都一样,内部逻辑随便实现
    class User(Person):
        def show_name(slef, name):
        		xxx("处理手段1")
        		xxx("处理手段2")
            print("报自己的名字")
        		xxx("处理手段3")
            return 1
    
  3. 依赖倒置原则
    高层模块不应该依赖底层模块,都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。换言之,要针对接口编程,而不是针对实现编程。

    from abc import ABCMeta, abstractmethod
    # 底层和高层模块都要依赖抽象接口,按照抽象接口的方法参数返回值来写
    
    class Payment(metaclass=ABCMeta):
        @abstractmethod
        def pay(self, money)->str:
        	  pass
            
     # 底层模块
     class Alipay(Payment):
        def pay(self, money):
           内部逻辑
           return str
    
  4. 接口隔离原则
    使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

    from abc import ABCMeta, abstractmethod
    
    class Animal(metaclass=ABCMeta):
        @abstractmethod
        def walk(self):
            # 走路
            pass
        
        @abstractmethod
        def swim(self):
            # 游泳
            pass
        
        @abstractmethod
        def fly(self):
            # 飞行
            pass
    # 子类继承动物父类
    class Tiger(Animal):
        # 当定义老虎时,发现,老虎只会走路不会游泳和飞行,但是不继承这两个方法就会报错,这怎么办?
        def walk(self):
            print("老虎走路")
    
    解决方法:要把动物这个接口拆开分别是,陆地动物、水里动物、飞行动物,即可,
    那么青蛙会游泳也会走路,这个时候就可以使用多继承了
    让青蛙继承两个类(水里动物和陆地动物)
    
    
  5. 单一职责原则
    不要存在多于一个导致类变更的原因,通俗的说,即一个类只负责一项职责。

    1.2 设计模式分类
    1. 创建型模式
    [ ] 工厂方法模式
    [ ] 抽象工厂模式
    [ ] 创建者模式
    [ ] 原型模式
    [ ] 单例模式
    2. 结构型模式
    [ ] 设配器模式
    [ ] 桥模式
    [ ] 组合模式
    [ ] 装饰模式
    [ ] 外观模式
    [ ] 享元模式
    [ ] 代理模式
    3. 行为型模式
    [ ] 解释器模式
    [ ] 责任链模式
    [ ] 命令模式
    [ ] 迭代器模式
    [ ] 中介者模式
    [ ] 备忘录模式
    [ ] 观察者模式
    [ ] 状态模式
    [ ] 策略模式
    [ ] 访问者模式
    [ ] 模板方法模式
    
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:30:49  更:2022-03-04 15:31:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:56:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码