设计模式
BingLau
这个作者很懒,什么都没留下…
展开
-
Python设计模式——原型模式
原型模式(Prototype Pattern)用途:根据现有对象复制出新的对象并对其修改。很多种方法,以下列举出两种: 有对象:point = Point(1, 2)方法一:使用copy.deepcopyother_point = copy.deepcopy(point)point.x = 8point.y = 2方法二:使用point的类对象创建:other_point = point.__原创 2015-03-08 00:29:25 · 371 阅读 · 0 评论 -
Python设计模式——代理模式
若想用一个对象来代表另一个对象,则可使用”代理模式”。原创 2015-03-12 16:34:56 · 778 阅读 · 0 评论 -
Python设计模式——组合模式
组合模式(Composite Pattern)可用来统合类体系中的这两种对象,一种对象能够包含体系中的其他对象,另一种为基本的单元对象,并不能包含其他对象。原创 2015-03-11 09:28:33 · 1011 阅读 · 0 评论 -
Python设计模式——单例模式
单例模式:保证某个类中只应该有一个实例。这里我们将使用Python Cookbook的代码方法一,继承Singleton类:class Singleton(object): """一个Python风格的单例模式""" def __new__(cls, *args, **kwargs): if not hasattr(cls,'_inst'):原创 2015-03-08 01:33:00 · 527 阅读 · 0 评论 -
Python设计模式——工厂方法模式
工厂方法模式(Factory method pattern):如果子类的某个方法要根据情况来决定用什么类去实例化相关对象,那么可以考虑该模式。此模式可单独使用,也可在无法预知对象类型时使用(比方说,待初始化的对象类型要从文件中读入,或是由用户来输入)。下面代码比较直接:#!/usr/bin/env python# encoding: utf-8""" 工厂模式"""class Abst原创 2015-03-07 10:30:40 · 676 阅读 · 0 评论 -
Python设计模式——适配器模式
所谓适配器模式是指是一种接口适配技术,它可通过某个类来使用另一个接口与之不兼容的类,运用此模式,两个类的接口都无需改动。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况,比如在需要对早期代码复用一些功能等应用上很有实际价值。结构图:其中Target是用户期望的标准类,而Adaptee是我们需要匹配的类,二者通过Adapter匹配起来。代码如下:#!/usr/bin/en原创 2015-03-09 22:06:50 · 1992 阅读 · 0 评论 -
Python设计模式——桥接模式
桥接模式(Bridge Pattern)用于将”抽象”(abstraction, 比如接口或算法)与实现方式相分离。如果不用桥接模式,那么通常的写法是,创建若干个基类,用于表示各种抽象方式,然后从每个基类中继承出两个或多个子类,用于表示对这种抽象方式的不同实现办法。用了桥接模式之后,我们需要创建两套独立的”类体系”:“抽象体系”定义了我们要执行的操作(比如接口或高层算法),而”实现体系”则包含具体实原创 2015-03-10 22:50:30 · 1334 阅读 · 0 评论 -
Python设计模式——抽象工厂
先说说抽象工厂(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。考虑构件工厂需要大量重复代码,我们可以使用继承和类方法来减少不必要的代码量:class FactoryTest(object): @classmethod def make_test_a(Class): return Class.Tes原创 2015-03-07 00:21:53 · 550 阅读 · 0 评论 -
Python设计模式——建造者模式
建造者模式(Builder Pattern):它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。也许在以下情况使用到它:当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;当构造过程必须允许被构造的对象有不同的表示时。参与者:AbstractBuilder 为创建一个Product对象的各个部件指定抽象接口。cla原创 2015-03-07 09:13:27 · 725 阅读 · 0 评论 -
Python设计模式——责任链模式
责任链模式(Chain of Responsibility Pattern)可将请求的发送方与处理请求的接收方解耦。原创 2015-03-13 18:01:18 · 2039 阅读 · 0 评论