我假设非django,使用装饰器的纯python解决方案对你来说可以。
请考虑下面的代码
def check1(): print "check1"
def check2(): print "check2"
def dev_api(f):
def fd(*args, **kw):
check1()
check2()
f(*args, **kw)
# optionally, perform some post check
print "post check"
return fd
@dev_api
def business(a, b, *args, **kw):
print 'business', a, b, args, kw
business(1, 2, 'a', 'b', 'c', x='x', y='y')
- CHECK1,CHECK2你persmission,不同的成本函数等
- dev_api是你的 “检查” 功能分组功能
- 业务是业务逻辑函数,其执行需要受到“检查”功能的限制
现在,你可以公开如上所述装饰的业务逻辑函数,或暴露装饰器本身以供最终开发者使用。
还有一点要学习装饰(即装饰参数)。请随时申请更多示例,如果需要的话。
以上代码的输出
check1
check2
business 1 2 ('a', 'b', 'c') {'y': 'y', 'x': 'x'}
post check
代理模式是有价值的,但也有很多的所有用户都需要有方法,如检查权限知道某些导航元素是否应该出现在页面上。 此外,我们没有使用Django'User'模型,而是编写了一个与旧数据库表接口的模型。 – exupero 2011-04-24 21:09:49