设计模式
DavidCao520
这个作者很懒,什么都没留下…
展开
-
设计模式-AbstractFactory
回想工厂方法模式,http://blog.csdn.net/caoxing81/article/details/45873605,大厅可能有多种风格, A和B的Widget也可能是不同组别不同人进行开发。这种情况下一个工厂类显然对代码结构,程序可维护性有影响。 我们可以创建多个WidgetFactory分别生成A,B类的Widget。 abstractfactory.h#ifndef ABST原创 2015-05-22 17:16:09 · 397 阅读 · 0 评论 -
Tornado源码分析1-Configurable
class Configurable(object): “”“Base class for configurable interfaces. A configurable interface is an (abstract) class whose constructor acts as a factory function for one of its implementation原创 2016-06-25 10:09:58 · 614 阅读 · 0 评论 -
Python 客制化类的创建过程
Python类的创建过程比较复杂,我们一步步来进行分析。 首先,从实现一个Singleton做起,先看下面的代码import copy class Singleton: def __new__(cls, *args, **kwargs): print("In Singleton __new__") if not cls._instance:原创 2016-06-24 16:44:23 · 466 阅读 · 0 评论 -
Python的多线程/多进程
Python的线程使用方式跟进程的使用方式类似,这里通过线程来演示。 存在两种产生线程的方式 1. 直接使用Thread 2. 继承Thread 直接使用Thread的方式:def func(): print('Thread start') print('Thread end')if __name__ == '__main__': t = Thread(target=原创 2016-06-24 16:23:58 · 378 阅读 · 0 评论 -
yield,generator type
yield语句只用于定义generator函数,调用generator函数会返回一个geneator对象g; 可以通过调用g的方法控制g的运行 generator内部的变量及调用栈等都可以在generator的运行/挂起过程中得到保存,这个特性跟corountine很像,实际上像Tornado等也是利用yield,异步IO等实现的协程。原创 2016-06-24 14:44:43 · 529 阅读 · 0 评论 -
Python限制函数运行时间,记录函数运行时间的装饰器
平时会碰到一些实时项目,有些函数必须要在某一时限完成,所以必须要加入一些手段去监控函数的运行时间,下面的装饰器time_limit提供了这么一个功能,如果函数未能在规定时间内完成,则会抛出TimeoutError。 log_time_delta可以对函数运行时间进行一个记录。from functools import wraps from threading import Timer import原创 2016-06-24 13:59:03 · 8263 阅读 · 4 评论 -
设计模式-Builder模式
GoF对Builder模式的定义是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 如果只看这句话很好理解,因为对于很多对象而言都有这个需求,你需要逐步构建一个复杂对象。但同时也是我很不理解的一个模式,因为看书或者一些BLOG都会有提到Director这个角色,而且例子中无一例外都是下面的样式 class Director() { void Contract原创 2015-05-24 15:18:19 · 384 阅读 · 0 评论 -
设计模式-Factory
有一定编程经验的XDJM对工厂方法模式肯定不会陌生了,曾经做过一个游戏大厅,那会的Qt还没有QML这个东东,为了能够动态的加载页面以及更加方便的调试。每一个Window都是使用一个XML去定义,里面按照树状结构定义了各种类型的控件。每个控件都是Widget的父类,Window在加载界面时显然并不方便去创建每个具体的Widget类,这时我们只需要创建一个Factory类,来处理相关的工作即可。 程序原创 2015-05-20 17:44:48 · 511 阅读 · 0 评论 -
设计模式-Singleton
Singleton算是知道的设计模式中最简单的最方便实现的了,模式实现了对于类提供唯一实例的方法,在很多系统中都会用到此模式。在实际项目中使用全局变量,或者静态函数等方式也可以达到这种目的。但是也会有些问题,比如不符合OO的原则,或者在Java中也不能使用全局变量等问题,所以掌握此类模式的标准实现还是有一定意义的。 设想一个权限管理类,根据用户名,IP等实现对用户会话,权限等的管理,此类在系统中应原创 2015-05-20 17:17:18 · 424 阅读 · 0 评论 -
设计模式-Prototype
原型也是一种创建型模式,考虑下面的场景: 一个类有1,2,3,4,5,6,7,8种状态,在运行过程中经过了以下1->2->3->4的状态转换,且进入到状态4时必须要经过1,2,3的状态转换。 在进入状态4后,可以向5,6,7,8状态转换。 此时要对此对象做白盒测试,1->4是一个固定的流程,很显然,从一个状态已经到4的对象开始复制一堆对象开始去做测试比new一堆对象再分别切换到5,6,7,8要原创 2015-05-24 21:07:25 · 446 阅读 · 0 评论 -
设计模式 Template模式
在面向对象系统的分析与设计过程中经常会遇到这样一种情况: 一个流程可以分为A,B,C….多个步骤,但在具体的步骤中可能会有不同的情况出现,这时就Template模式就非常有用:class P(object): def a(): pass def b(): pass def operate(): a() b() cla原创 2015-06-06 20:07:58 · 426 阅读 · 0 评论 -
Python-装饰器;Decorator模式
直接转载一篇吧,够详细。具体的链接没有留下来….这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式。 第一步:最简单的函数,准备附加额外功能# -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次'''def myfunc(): print("myfunc() called.")myfunc() myfunc()第二步:使用装饰函数在函数执转载 2016-06-26 17:13:42 · 414 阅读 · 0 评论