ImageVerifierCode 换一换
格式:DOCX , 页数:79 ,大小:542.31KB ,
资源ID:665025      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/665025.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java程序的设计模式程序的设计说明.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java程序的设计模式程序的设计说明.docx

1、Java程序的设计模式程序的设计说明Java设计模式1.1 创建型模式AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Prototype ( 原型模式 ) 1.2 结构型模式Adapter ( 适配器模式 ) Bridge ( 桥接模式 ) Composite ( 组合模式 ) Decorator ( 装配模式 ) Facade ( 外观模式 ) Flyweight ( 享元模式 ) Proxy ( 代理模式 ) 1.3 行为型模式Chain of Responsibili

2、ty ( 责任链模式 ) Command ( 命令模式 ) Interpreter ( 解释器模式 ) Iterator ( 迭代器模式 ) Mediator ( 中介者模式 ) Memento ( 备忘录模式 ) Observer ( 观察者模式 ) State ( 状态模式 ) Strategy ( 策略模式 ) TemplateMethod ( 模板方法 ) Visitor ( 访问者模式 ) Toney Chen的总结Singleton设计模式 Singleton单类模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单类模式的类只能有一个实例对象存在。单类模式实现了

3、类似C语言中全局变量的功能,单类模式常用于注册/查找的服务。单类模式有两种实现方式:饱汉模式和饿汉模式,如下:饱汉单类模式例子代码:java view plaincopy1. publicclassSingleton12. /饱汉模式,声明时就创建实例对象3. publicstaticfinalSingleton1instance=newSingleton1();4. /单类模式的构造方法必须为private,以避免通过构造方法创建对象实例,5. /并且必须显示声明构造方法,以防止使用默认构造方法6. privateSingleton1()7. /单类模式必须对外提供获取实例对象的方法8. p

4、ublicstaticSingleton1geInstance()9. returninstance;10. 11. 饿汉单类模式即延迟初始化单类方式,例子代码:java view plaincopy1. publicclassSingleton22. /饿汉模式,声明时不创建实例对象3. publicstaticSingleton2instance;4. /单类模式的构造方法必须为private,以避免通过构造方法创建对象实例,5. /并且必须显示声明构造方法,以防止使用默认构造方法6. privateSingleton2()7. /单类模式必须对外提供获取实例对象的方法,延迟初始化的单类模

5、式必须使用synchronized同步关键字,否则多线程情况下很容易产生多个实例对象8. publicstaticsynchronizedSingleton2geInstance()9. /延迟初始化,只有当第一次使用时才创建对象实例10. if(instance=null)11. returnnewSingleton2();12. 13. returninstance;14. 15. 一般认为饱汉模式要比饿汉模式更加安全。上面两种Singleton单类设计模式的实现方式都隐藏有如下的问题:(1).虽然构造方式的访问修饰符为private,即除了自身以外其他任何类都无法调用,但是通过反射机制的

6、setAccessiable(true)方法可以访问私有方法和属性。因此Singleton单类模式必须考虑这种例外情况。(2).对象序列化之后再反序列化时会生成新的对象,因此当Singleton单类模式类实现序列化接口时,必须显式声明所有的字段为tranisent。在JDK1.5之后引入了Enum枚举,因此在JDK1.5之后Singleton单类模式又有了第三种实现方式,也是最好的实现方式,例子如下:java view plaincopy1. publicenumSingleton32. INSTANCE3. publicvoiddoSomething()4. 5. 6. ;7. public

7、Singleton3getInstance()8. returnINSTANCE;9. 10. publicabstractvoiddoSomething();11. Singleton单类模式中只有一个INSTANCE枚举元素,枚举可以保证真个程序生命周期中只有一个实例对象存在,同时还避免了常规Singleton单类模式private构造方法被反射调用和序列化问题。注意:java中除了构造方法可以创建对象实例以外,还可以通过克隆方法(clone()是Object中的protected方法)来创建对象, 若单类对象直接继承自Object对象,则如果没有提供具体clone方法实现,则当调用克隆方

8、法创建对象时,会抛出运行时的异常 CloneNotSupportedException。若单类类继承了实现克隆方法的类,则在单类类中必须覆盖父类的克隆方法,显式抛出异常CloneNotSupportedException。另外,实现了单类模式的类不能再有派生子类,因为构造方式是私有的,子类无法调用父类构造方法,因此达到了Final的效果。Proxy设计模式 Proxy代理设计模式是一种控制对象访问的设计模式,类似于网络代理,网络代理机制如下图:Proxy代理设计模式机制如下:客户端程序通过代理程序来访问真正的目标程序,代理程序对外隐藏了目标程序。普通代理设计模式例子代码如下:java view

9、 plaincopy1. interfaceProxyBase2. publicvoidf();3. publicvoidg();4. publicvoidh();5. 6. /代理程序7. classProxyimplementProxyBase8. privateProxyBaseimplementation;9. publicProxy()10. /目标程序11. implementation=newProxyImplementation();12. 13. publicvoidf()14. implementation.f();15. 16. publicvoidg()17. impl

10、ementation.g();18. 19. publicvoidh()20. implementation.h();21. 22. 23. /目标程序24. classProxyImplementationimplementsProxyBase25. publicvoidf()26. System.out.println(“ProxyImplementation.f()”);27. 28. publicvoidg()29. System.out.println(“ProxyImplementation.g()”);30. 31. publicvoidh()32. System.out.pri

11、ntln(“ProxyImplementation.h()”);33. 34. 35. /客户端程序调用代理36. publicclassProxyDemo37. publicstaticvoidmain(Stringargs)38. /客户端调用代理程序39. Proxyp=newProxy();40. p.f();41. p.g();42. p.h();43. 44. 从JDK1.3以后,java引入动态代理机制,java的动态代理只能针对接口进行动态代理,即要实现动态代理的类必须实现接口,CGLIB提供了针对类的动态代理功能。JDK动态代理的例子如下:java view plaincop

12、y1. /代理接口2. interfaceFoo3. publicvoidf(Strings);4. publicvoidg(inti);5. publicvoidh(inti,Strings);6. 7. /接口实现类,即被代理类8. classFooImplimplementsFoo9. publicvoidf(Strings)10. System.out.println(“FooImpl.f(),s=”+s);11. 12. publicvoidg(inti)13. System.out.println(“FooImpl.g(),i=”+i);14. 15. publicvoidh(inti,Strings)16. System.out.println(“FooImpl.h(),i=”+i+“,s=”+s);17. 18. 19. /动态代理处理类20. classProxyHandlerimplementsInvocationHandler21. /代理实现类22. privateObjectdelegate;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1