好的日志对一个软件的重要性是显而易见的。如果函数的入口都要写一行代码来记录日志,这种方式实在是太低效了,但一直没有找到更好的方法。后来用python写一些软件,了解到python的装饰器功能时,突然人品爆发,结合装饰器来记录日志那是绝对的简单有效! 下面简单演示一下用装饰器来协助记录Log,示例代码 ...
分类:
编程语言 时间:
2016-03-29 12:26:30
阅读次数:
262
1.定义 外观模式(Facade-Pattern):提供了一个统一的接口,用来访问子系统中的一群接口外观定义了一个高层接口,让子系统更容易使用。 2.示例:家庭影院 3.外观模式特点 要使用外观模式,需创建一个接口简化并且统一的类,用来包装系统中一个或多个复杂的类。它也是一个改变接口的类(装饰模式,... ...
分类:
其他好文 时间:
2016-03-27 23:59:39
阅读次数:
429
鼠标事件:click,dblclick,mousedown,mouseout,mouseover,mouseup,mousemove键盘事件:keydown,keypress,keyupclientX设置或获取鼠标指针位置相对于窗口的客户区的x坐标,窗口装饰和滚动条除外。clientY设置或获取鼠标 ...
分类:
其他好文 时间:
2016-03-27 22:31:01
阅读次数:
182
1 def outer(fun): # f 为用out装饰的函数 2 def inner(): 3 print('装饰器!') 4 fun() 5 print('test') 6 return inner 7 8 @outer 9 def fun1(): 10 print('fun1') 11 12 ...
分类:
编程语言 时间:
2016-03-27 14:08:33
阅读次数:
160
JS随机数种子 1 试着想一下,如果在某一个场景,我们做一个游戏,用户玩到一半的时候退出了,这样 用户下次进来可以选择继续上一次的进度继续玩,那么现在问题来了:用户玩 的进度以及用户的积分等简单的描述数据,我们都可以记录下来,但是游戏里绘制的障碍物、飞行物以及很多装饰类的小玩意儿,他们甚至是每次用户 ...
分类:
Web程序 时间:
2016-03-26 20:10:49
阅读次数:
189
装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。大话设计模式中程杰老师给出的定义,装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。装饰模式结构图如下:...
分类:
其他好文 时间:
2016-03-26 12:40:13
阅读次数:
161
装饰器:本身是一个函数,用于装饰其他函数。作用:增强被装饰函数的功能。装饰器通常把其他函数作为参数,增加其功能。例1:函数不需被调用,直接运行>>>defdeco(func):######定义装饰器函数,func函数为参数...print(‘beforemyfunc()called‘)...func()#######调用原..
分类:
编程语言 时间:
2016-03-26 09:02:37
阅读次数:
169
装饰器的定义很是抽象,我们来看一个小例子。 这是一个很无聊的函数没错。但是突然有一个更无聊的人,我们称呼他为B君,说我想看看执行这个函数用了多长时间,好吧,那么我们可以这样做: 很好,功能看起来无懈可击。可是蛋疼的B君此刻突然不想看这个函数了,他对另一个叫foo2的函数产生了更浓厚的兴趣。 怎么办呢 ...
分类:
编程语言 时间:
2016-03-23 21:55:33
阅读次数:
246