设计模式:策略模式与代理模式等的区别

zz[url]http://royaki.iteye.com/blog/659895[/url]

[size=medium][color=red]策略模式、代理模式、适配器模式区别[/color][/size]
[quote]简单代理模式中,代理类知道被代理类的行为,因为代理类与被代理类实现的是同一个接口,因此代理类与被代理类的结构是相同的;

而策略模式中,策略容器并不知道内部策略的详细信息,因为容器并没有实现与内部策略相同的接口,即容器与内部策略只是简单的组合关系,容器只是将内部策略的行为抽取出来,进行了统一的实现。

策略模式在项目中适用于 实现同一个目标但是有很多不同的做法的情况,比如实现数据库里面的搜索,可能算法、方式很多,但是目的差不多。这时候可以使用策略模式

代理模式主要针对对象的访问控制,比如在hibernate的懒加载中,不希望页面直接访问dao层的数据,这时候给页面开放一个Proxy。


适配器模式
那到底什么时候需要用适配器呢?一个根本的理由就是系统需要使用现有的类,但是这个类的接口不符合当前的要求。[/quote]

[size=medium][color=red]策略模式与简单工厂模式的主要区别是Context类与工厂类的区别。[/color][/size]
[quote]
A. 策略模式的Context类在简单工厂模式中对应的是工厂类。工厂类只提供一个静态方法,负责创建子类的实例,并返回给调用者(即客户端)。
B. 在策略模式中,Context类在自己的构造函数中创建具体算法(子类)的实例,当然构造函数不会返回任何值给调用者。但是Context类提供了一个/一些方法,用来封装在基类中定义的算法接口,并返回结果给客户端。从这个意义上说,策略模式就是用来封装算法的。实际上它可以用来封装任何类型的规则。但是简单工厂模式的工厂类就没有提供这样的能力。[/quote]


[size=medium][color=red][b]桥梁模式[/b][/color][/size]
[quote]
说到桥梁模式,那就多扯几句,大家对类的继承有什么看法吗?继承的优点有很多,可以把公共的方法 或属性抽取,父类封装共性,子类实现特性,这是继承的基本功能,缺点有没有?有,强关联关系,父类有个方 法,你子类也必须有这个方法,是不可选择的,那这会带来扩展性的问题,我举个简单的例子来说明这个问题: Father 类有一个方法 A,Son 继承了这个方法,然后 GrandSon 也继承了这个方法,问题是突然有一
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值