python六大原则_python 设计模式(二) 六大设计原则六 开放封闭原则(open closed principle)...

开放封闭原则,是面向对象编程的核心,也是其余五大设计原则实现的终极目标。只有对抽象编程,而不是对具体编程才是遵循了开放封闭原则。编程

开放:指的是软件对扩展开放。设计

封闭:指的是软件对修改封闭。code

即软件增长或改变需求是经过扩展来到,而不是经过修改来实现的。即一个类定型后尽可能不要去修改。而是经过增长新类来知足需求。对象

举例:银行的统一叫号系统。代码以下it

class BankProcess(object):

def __init__(self):

pass

def deposite(self):

print('deposite')

def withdraw(self):

print('withdraw')

class Customer(object):

def __init__(self, type):

self.type = type

class Client(object):

def __init__(self, customer):

self.customer = customer

self.bankprocess = BankProcess()

def process(self):

if self.customer.type == 'deposite':

self.bankprocess.deposite()

elif self.customer.type == 'withdraw':

self.bankprocess.withdraw()

else:

pass

if __name__ == '__main__':

customer = Customer('withdraw')

client = Client(customer)

client.process()

customer.type = 'deposite'

client.process()

结果以下面向对象编程

withdraw

deposite

上面的例子不符合开放封闭原则,也不符合单一职责原则。若是想增长转帐功能,类bankprocess必须被修改,这就违法了开放封闭原则。同时类bankprocess功能过多,也不符合单一职责原则。class

实现符合开放封闭原则的代码cli

class DepoBankProcess(object):

def __init__(self):

pass

def deposite(self):

print('deposite')

class WitBankProcess(object):

def __init__(self):

pass

def withdraw(self):

print('withdraw')

class Customer(object):

def __init__(self, type):

self.type = type

class Client(object):

def __init__(self, customer):

self.customer = customer

self.bankprocess = None

def process(self):

if self.customer.type == 'deposite':

self.bankprocess = DepoBankProcess()

self.bankprocess.deposite()

elif self.customer.type == 'withdraw':

self.bankprocess = WitBankProcess()

self.bankprocess.withdraw()

else:

pass

if __name__ == '__main__':

customer = Customer('withdraw')

client = Client(customer)

client.process()

customer.type = 'deposite'

client.process()

结果以下扩展

withdraw

deposite

上述代码原bankprocess类中的方法分别拆分为类。这样就符合了单一职责原则。同时增长功能只需增长类就好了。避免了经过修改现有类来增长功能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值