python深入之类的设计原则(非常重点)

(1)类的设计原则:SOLID,是5个原则的首字母,即单一职责原则(Single Responsbility Principle)、开放关闭原则(Open Close Principle)、里氏替换原则(Liskov Substitution Principle)、接口分离原则(Interface Segregation Priciple)、依赖倒置原则(Independency Inversion Principle)

(2)单一职责原则(Single Responsbility Principle):即一个类只负责一个职责,完成一个功能。好处是1。易于维护,可以写出高内聚的代码,即一个类中所有的属性和方法都是紧密相邻的,聚合度高的,不会有不相干的方法和属性;2.已于代码的复用,由于单一职责,不会和其他职责混在一起,便于重复的使用

(3)开放关闭原则(Open Close Principle):即对扩展开放,对修改关闭,意思是写好的方法可以允许去进行扩展,但不要随意其修改。好处是1.易于代码维护,提升方法安全性,如果随意对修改方法,有可能会破坏方法的原有功能;2.保证代码的扩展性,两个例子,如装饰器可以起到扩展方法功能的作用,不会改变原有代码,如几个方法功能相同,只是面向的对象不同,对这几个方法进行判定调用(if--else语句)时,可以将方法名称改为相同,可以避免新增对象时增加判定语句,这里可以直接调用一个方法即可,因为不管是哪个对象,都是调用这个名称的方法

def petsWork(self):
    for pet in self.pets:
        # if isinstance(pet, Dog):
        #     pet.watch()
        # else isinstance(pet, Cat):
        #     pet.catch()
        pet.work()
class Dog(Animal):
    def work(self):
        print("%s看家" % self)
class Cat(Animal):
    def work(self):
        print("%s捉老鼠" % self)

(4)里氏替换原则(Liskov Substitution Principle):使用基类引用的地方,必须可以使用继承类的对象,即任何地方继承类都可以用来替代基类,如一个父类是鸟类,拥有叫和飞两个方法,但是其继承类是燕子和鸵鸟,而鸵鸟不具有飞这个方法,所以不能使用鸵鸟来替代鸟类,违背里氏替换原则。好处是1.防止代码出现不可预知的错误,因为子类继承了父类中一些其不能拥有的方法;2.方便用在基类上的测试代码,复用在子类上

(5)接口分离原则(Interface Segregation Priciple):如果一个类包含很多接口,这些接口在使用中可以分离,那么就尽量将其分离开来,如上述里氏替换原则中的鸟类和鸵鸟的继承,违背了里氏替换原则,这时就可以将鸟内中的两个方法进行分离在不同的类中,只让鸵鸟继承叫的方法即可,这样即遵循了接口分离原则,也不违背里氏替换原则。其实python中的接口,可以理解为就是抽象的方法。好处是提高接口的复用价值

(6)依赖倒置原则(Independency Inversion Principle):即高层模块不应该直接依赖于底层模块,而是依赖于抽象的类或是抽象的方法,如电脑依赖的并不是具体的鼠标类,而是鼠标的类和方法,只要能单击,双击和移动指针就行,具体的东西可以是鼠标,也可以是键盘

(7)总结:这些原则可以转化为自己编程的经验,其中在python中常用的类设计原则是单一职责原则(Single Responsbility Principle)、开放关闭原则(Open Close Principle),其他三个是在具体项目开发中才会用到

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值