二者的代码实现上非常的类似,但是就行为目的而言,二者是相反的(装饰模式:增强,代理模式:限制)装饰器模式:能动态的新增或组合对象的行为。代理模式:为其他对象提供一种代理以控制对这个对象的访问.(换句话说,可以不执行某功能)装饰模式是“新增行为”,而代理模式是“控制访问”。装饰模式是在原有基础之上增加...
分类:
其他好文 时间:
2014-05-26 21:55:37
阅读次数:
265
在面向对象设计过程中,经常会遇到需要对现有的类的功能进行扩展,通常我们可以采用继承的方式。例如老罗最近在做手机,一开始需要定义手机所应具有的功能:1
interface Phone{2 3 public void tel();4 5 public void sms()...
分类:
其他好文 时间:
2014-05-25 11:34:23
阅读次数:
272
近日重读《javascript面型对象编程指南》这本书,最后一章介绍了常见的javascript设计模式的实现。主要讲解了四种设计模式:单例模式、工厂模式、装饰器模式和观察者模式。js作为动态语言,实现这四种模式的实例相对简单,当然既然称之为模式,那么吃透思想更重要,那么下面,由乐帝来实例讲解四种模式。
1.单例模式
顾名思义,对象构造出来的是实例,从字面上理解,单例即单实例,这意...
分类:
编程语言 时间:
2014-05-24 18:21:35
阅读次数:
335
1. 返回对象的数目 python实际返回的对象 0 -> None ; 1 ->
object ; >1 -> tuple2. 内部/内嵌函数:如果内部函数的定义包含了再外部函数里定义的对象的引用,
内部函数会变成被称为闭包的特别之物。3. 装饰器
分类:
编程语言 时间:
2014-05-15 15:46:59
阅读次数:
188
静态方法独立于类和类的实例,它是定义在类作用域内的方法。可以由类和实例直接调用。
类方法和静态方法都要使用装饰器来定义,定义的基本格式是:
@staticmethod
def ():
#do something
类方法定义的基本格式是:
@ classmethod
def (cls):
#dosomething
类方法与成员方法不同的是,它需...
分类:
编程语言 时间:
2014-05-11 22:25:53
阅读次数:
422
Flask默认使用的是Jinja2的模板引擎,下面将会介绍下Flask提供给模板的一些方法。#-*-coding:utf-8-*-
#导入一些函数
fromflaskimportFlask
fromflaskimportrender_template,g
#创建一个app
app=Flask(__name__)
#创建一个装饰器
@app.route("/")
@app.route("/index")
defindex..
分类:
其他好文 时间:
2014-05-11 19:25:12
阅读次数:
443
本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns.由
@krq_tiger(http://weibo.com/xmuzyq)翻译,如果你发现有什么错误,请与我联系谢谢。门面(Facade)模式(译者注:facade有些书籍译为...
分类:
移动开发 时间:
2014-05-08 23:07:24
阅读次数:
565
Python是一种强大的语言,即可浅尝辄止,也可深入挖掘。很适合做科学计算、数据挖掘等等。今天我将简单介绍一下Python的装饰器(Decorators)的用法 。
假设我们想要庆祝下生日,需要邀请一些朋友过来参加。但是你有个讨厌的朋友,叫Joe,必须不能让他来啊。可能首先你想到的是建一个list,然后迭代查找并移除所有的Joe童鞋。这当然是个好方法,但是这里为了介绍装饰器,我们会用@来完成...
分类:
编程语言 时间:
2014-05-06 23:19:53
阅读次数:
371
常用的有创新型的设计模式:简单工厂、抽象工厂和单例模式;行为型的设计模式:模板设计模式、观察者模式和命令模式;结构性的设计模式:适配器设计模式、代理模式(静态和动态两种,典型的有在spring的AOP编程中使用)和装饰器设计模式。...
分类:
其他好文 时间:
2014-05-04 08:56:36
阅读次数:
313
代理模式与装饰器模式的区别,主要大于,从使用者(客户端)的角度来看的://装饰器的客户public class Client{ public static
void main(String[] args){ //客户指定了装饰者需要装饰的是哪一个类 ...
分类:
其他好文 时间:
2014-05-01 18:47:25
阅读次数:
354