设计模式:001面向对象设计原则

在这里插入图片描述
里氏替换原则:函数传父类对象(User)也必定可以穿子类对象(Vip)【vip继承与User】
在这里插入图片描述

class User:
    def show_name(self):
        pass

class VIPUser(User):
    def show_name(self):
        pass

u = User()
def show_user(u):
    res = u.show_name()

高层模块不应该依赖底层模块,【说半天就一句话,依赖接口编程!!】

https://blog.csdn.net/zhengzhb/article/details/7289269?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163809045916780264060299%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163809045916780264060299&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~hot_rank-2-7289269.first_rank_v2_pc_rank_v29&utm_term=%E4%BE%9D%E8%B5%96%E5%80%92%E7%BD%AE%E5%8E%9F%E5%88%99&spm=1018.2226.3001.4187

在这里插入图片描述
老虎类继承了动物类,然而却被迫实现他不该有的行文。因此就有了接口隔离原则。

#一个类如果有抽象方法,就属于抽象类
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("老虎走路")

#被迫实现自己没有的功能???
t = Tiger()

TypeError: Can’t instantiate abstract class Tiger with abstract methods fly, swim
遵循接口隔离原则:使用多个专门接口
青蛙多继承,陆地,水上。
天鹅多继承,陆地,水上,天空。

# -*- encoding: utf-8 -*-
"""
@File    : interface.py
@Time    : 2021-10-20 10:20
@Author  : XD
@Email   : gudianpai@qq.com
@Software: PyCharm
"""
#一个类如果有抽象方法,就属于抽象类
from abc import ABCMeta, abstractmethod

class LandAnimal(metaclass = ABCMeta):
    @abstractmethod
    def walk(self):
        pass

class SkyAnimal(metaclass = ABCMeta):
    @abstractmethod
    def fly(self):
        pass

class WaterAnimal(metaclass = ABCMeta):
    @abstractmethod
    def swim(self):
        pass

class Tiger(LandAnimal):
    def walk(self):
        print("老虎走路")

class Frog(LandAnimal, WaterAnimal):
    def walk(self):
        pass
    def swim(self):
        pass

f = Frog()

这三种模式都是为了把一句话变成很多代码
创建型模式:作用于对象的创建,将对象的创建与使用分离
结构性模式:将类或对象按某种布局组成更大的结构
行为型模式:作用于类或对象之间相互协作共同完成单个对象无法单独完成的任务

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值