标签:splay 开放 pycharm char 登录 name png 用户登录 hid
开放封闭原则(OCP,Open Closed Principle)是所有面向对象的编程的原则核心,其思想是:
def home_page(): print ("welcome to home page" ) def video_page(): print("welcome to video page")
现在对这个站点进行功能改造,要求用户在主页去访问子页的时候,要求进行一次验证,
在这里其实函数video_page()的功能就是展示页面,这里可以通过修改函数video_page()来完成这个需求!
代码如下:
def video_page(): print("Login username and password !") print("welcome to video page")
这样在函数video_page在执行的时候,就会首先进行一次验证(这里print只是模拟验证)
如果子页很多,每个子页都修改这个导致代码凌乱(这个不是大问题,因为可以使用函数式编程)
函数式代码b编程:
def login(): print("Login username and password") def home_page(): print ("welcome to home page" ) def video_page(): login() print("welcome to video page") video_page()
但是这样不符合OCP原则,我们应该尽可能的在外部对函数进行扩展
代码:
def login(fun): print("Login username and password") return fun def home_page(): print ("welcome to home page" ) @login def video_page(): print("welcome to video page") video_page()
在函数A之前通过@调用函数B,这个函数B就是装饰器。
这个@login其实就是等于:
video_page = login(video_page)
定义一个变量,变量中调用函数,函数中调用函数体
那么也就是说,不管有没有调用函数video_page(),这段代码都会运行“video_page = login(video_page)”
测试:
所以还得继续修改完善迭代器代码:
def login(fun): def inner(): print("Login username and password") fun() return inner def home_page(): print ("welcome to home page" ) @login def video_page(): print("welcome to video page") video_page()
具体执行过程,可以辅助代码到pyCharm中执行断点运行
标签:splay 开放 pycharm char 登录 name png 用户登录 hid
原文地址:http://www.cnblogs.com/alben-cisco/p/6901714.html