设计模式资料

1.书籍

2.网站

 http://www.jdon.com/designpatterns/index.htm

2.1factory模式分为 简单工厂,抽象工厂模式

简单工厂:一个工厂类,一个抽象产品类和多个具体产品类

抽象工厂:一个抽象工厂,多个具体工厂类,多个抽象产品类,多个抽象产品实现类

来个比喻:
一个农场中由一个人来管理农场中的所有产品,这就是简单工厂模式,这种模式只适合小的农场。
当农场规模扩大后,一个人来管理显示不合适,这时就需要多个人来管理,相当于有多个具体工厂类,每个人管理不同的产品,如张三管理大白菜,李四来管理苹果...
如果农场进一步扩大,比如大白菜这个品种,有北方的大白菜,有南方的大白菜,或者更多,其它的产品与大白菜类似,分成许多地域的品种,这时就要采用抽象工厂模式。
农场的抽象工厂模式:
一个抽象产品类,用来管理南方的产品,包括大白菜等
另一个抽象产品类,用来管理北方的产品,包括大白菜等

考虑很多情况下,在工厂方法中利用class.forName动态加载类来实现工厂方法

2,2Prototype.

其实就是clone方法

2.3Builder.
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件
在Java实际使用中,我们经常用到"池"(Pool)的概念,当资源提供者无法提供足够的资源,并且这些资源需要被很多用户反复共享时,就需要使用池.
"池"实际是一段内存,当池中有一些复杂的资源的"断肢"(比如数据库的连接池,也许有时一个连接会中断),如果循环再利用这些"断肢",将提高内存使用效率,提高池的性能.修改Builder模式中Director类使之能诊断"断肢"断在哪个部件上,再修复这个部件.

2.4Singleton(单态模式)

2.5Facade
典型应用是数据库jdbc应用和EJB Facade

2.6Proxy
在出发点和目的地之间有一道中间层.
常见使用场合,
2.6.1授权机制.RMI.CORBA调用
2.6.2某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动.
举例两个具体情况:
(1)如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,打开文档必须很迅速,不能等待大图片处理完成,这时需要做个图片Proxy来代替真正的图片.
(2)如果那个对象在Internet的某个远端服务器上,直接操作这个对象因为网络速度原因可能比较慢,那我们可以先用Proxy来代替那个对象.
总之原则是,对于开销很大的对象,只有在使用它时才创建,这个原则可以为我们节省很多宝贵的Java内存. 所以,有些人认为Java耗费资源内存,我以为这和程序编制思路也有一定的关系.
实现方式:比如有个接口Forum,一个真正的实现类DbForum和一个proxy实现类ProxyForum.利用ProxyForum权限鉴定后,再转给真正的DbForum
不改变对象接口。对对象使用施加控制。


2.7Adapter
改变所考虑对象接口。Swing中的windowAdapter

2.8Composite
文件夹目录

2.9Decorator
不改变对象接口。对装饰对象提供增强功能/。Java IO
IO中的FileReader.添加了新的功能.从业务上说可以动态插入

2.10Strategy

2.11template method

2.12observer模式
典型的mvc中利用了该模式

其他模式描述暂略,以后再补充

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值