最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python设计模式Adapter Pattern例子详解
时间:2014-12-29 编辑:简简单单 来源:一聚教程网
Python设计模式
3种类型:
1. 创建型
*灵活方式创建对象*
- 抽象工厂
- 建造者
- 工厂方法
- 原型
- 单例
2. 结构型
*将一种对象改装为另一种对象,或将小对象合成大对象*
- 适配器
- 桥接
- 组合
- 修饰器
- 外观
- 享元
- 代理
3. 行为型
*关注做事过程,算法及对象间的交互*
- 责任链
- 命令
- 解释器
- 迭代器
- 中介者
- 备忘录
- 观察者
- 状态
- 策略
- 模板方法
- 访问者
适配器模式 Adapter Pattern
概念:
是一种接口适配技术,可通过某个类来使用另一个接口与之不兼容的类。
使用时,两个类的接口都无须改动。
场景:
把某个类从其原先的应用场景中拿出来放在另一个环境中运行,而这个类又不能修改。
示例:
创建一个人,点击他会显示名字,说话。
代码如下 | 复制代码 |
class Person(object): “"”A representation of a person in 2D Land””” def init(self, name): self.name = name def make_noise(self): return “hello” def click_creature(creature): “"”React to a click by retrieving the creature’s name and what is says “”” return creature.name, creature.make_noise() |
创建一只狗
代码如下 | 复制代码 |
class Dog(object): “"”A representation of a dog in 2D Land””” def init(self, name): self.name = name def bark(self): return “woof” |
狗只有bark,没有make_noise,需要适配。
代码如下 | 复制代码 |
the Class Adapter class Person(Creature): def make_noise(self): class DogClassAdapter(Creature, Dog): def make_noise(self): def make_noise(self): class DogAdapter(object): def make_noise(self): def __getattr__(self, attr): def click_creature(creature): return (creature.name, creature.make_noise()) for critter in (person, canine): print critter.name, "says", critter.make_noise() if __name__ == "__main__": |
创建更多的生物,猫,鸟…
####
代码如下 | 复制代码 |
class Cat(object):
|
测试
代码如下 | 复制代码 |
for critter in (person, canine, feline): |
相关文章
- 设计模式速记方法 03-14
- java 设计模式之装饰者模式 VS 代理模式详解 08-15
- java设计模式之单例模式(Singleton pattern) 08-01
- Java设计模式之门面模式使用详解 04-08
- 设计模式篇02 模版设计模式 11-01
- Java 设计模式之工厂方法(Factory Method) 08-06