python不属于面向对象的设计原则_十二岁。面向对象的Python设计原则

-

原则

(目标、

总的指导思想

)

O

pen

C

losed

P

rinciple

对扩展开放,对修改关闭。

增加新功能,不改变原有代码。

例如:Man开车去上班,调用Car的run方法,Car的行驶路线可以随意更改,Man去上班的这件事情不用变

的单一职

责(一

个类的定义)

S

ingle

R

esponsibility

P

rinciple

一个类有且只有一个改变它的原因。

例如:Car只负责运送人,Man只管上班

依赖

倒置

(依赖

抽象

)

D

ependency

I

nversion

P

rinciple

客户端代码(调用的类)尽量依赖(使用)抽象。

抽象不应该依赖细节,细节应该依赖抽象。

例如:Man上班需要交通工具Vehicle,至于什么交通工具,有啥就是啥

组合复用原则(复用

的最佳实践

)

C

omposite

R

euse

P

rinciple

如果仅仅为了代码复用优先选择组合复用,而非继承复用。

组合的耦合性相对继承低。

例如,Man的交通工具很多,由自行车,摩托车,小汽车,电动车等等,有什么用什么

氏替换

(继承

后的重写

指导继承的设计

)

L

iskov

S

ubstitution

P

rinciple

父类出现的地方可以被子类替换,在替换后依然保持原功能。

子类要拥有父类的所有功能。

子类在重写父类方法时,尽量选择扩展重写,防止改变了功能。

例如:Bike,Car的run实现各自是不一样的

米特法则

(类

与类交互的原则

)

L

aw

o

f

D

emeter

不要和陌生人说话。

类与类交互时,在满足功能要求的基础上,传递的数据量越少越好。因为这样可能降低耦合度。

示例:

class Vehicle:

def __init__(self, speed):

self.speed = speed

def run(self):

pass

class Bike(Vehicle):

def run(self):

print("甩起两条小短腿")

class Car(Vehicle):

def run(self):

print("一脚油门的事情")

class Man:

def __init__(self, name, vehicle):

self.name = name

self.vehicle = vehicle

def work(self):

print(self.name, "该去上班了")

self.vehicle.run()

if __name__ == '__main__':

w = Man("老王", Bike(10))

# 老王骑车去上班

w.work()

# 老张开车去上班

z = Man("老张", Car(100))

z.work()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值