【编程思想】【设计模式】【基础模式Fundamental】delegation_pattern
2024-08-29 01:08:40
Python版
https://github.com/faif/python-patterns/blob/master/fundamental/delegation_pattern.py
#!/usr/bin/env python
# -*- coding: utf-8 -*- """
Reference: https://en.wikipedia.org/wiki/Delegation_pattern
Author: https://github.com/IuryAlves *TL;DR80
Allows object composition to achieve the same code reuse as inheritance.
""" class Delegator(object):
"""
>>> delegator = Delegator(Delegate())
>>> delegator.do_something("nothing")
'Doing nothing'
>>> delegator.do_anything() """ def __init__(self, delegate):
self.delegate = delegate def __getattr__(self, name):
def wrapper(*args, **kwargs):
if hasattr(self.delegate, name):
attr = getattr(self.delegate, name)
if callable(attr):
return attr(*args, **kwargs)
return wrapper class Delegate(object): def do_something(self, something):
return "Doing %s" % something if __name__ == '__main__':
import doctest
doctest.testmod()
Python转载版
最新文章
- 【bzoj4517】 Sdoi2016—排列计数
- 网络流最小割 POJ 3469
- Teehan &; Lax 发布 iOS 7 GUI PSD 模板,免费下载
- 编译hadoop遇到maven timeout
- Jmeter笔记1:使用Badboy录制脚本,作为JMeter测试的素材
- WIM更新命令(打补丁)
- PHP内核探索之变量(1)变量的容器-Zval
- ios-pch文件的手动添加
- Java 新特性(7) - Java EE 7 新特性
- Java--向数据库添加txt文件中的批量数据
- 【转载】【时序约束学习笔记1】Vivado入门与提高--第12讲 时序分析中的基本概念和术语
- 其它综合-运维老鸟分享linux运维发展路线规划
- Java作业三(2017-9-25)
- @Html.xxxxxFor() 规范写法
- <;<;梦断代码>;>;阅读笔记一
- SharePoint 2013 文档库“样式”变了
- 什么是RUP
- 通过 NewLife.XCode 迁移任意现有数据库到任意数据库
- Eclipse快捷键--备忘
- xcode/Interface Build(IB)/iPhone模拟器/mac/组合键常用的命令集