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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

设计模式代码样例文档格式.docx

1、);5. 6. SmsSendersmssender!6. 7. 最后,建工厂类:SendFactoryproduce(Stringtype)if(mail.equals(type)returnnewMailSender();elsesms7. SmsSender();8. 9. 请输入正确的类型!10. null;11. 12. 13. 我们来测试下:FactoryTeststaticmain(Stringargs)factory=SendFactory();senderfactory.produce(sender.Send();8. 输出:this is sms sender!22、多个工

2、厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。关系图:将上面的代码做下修改,改动下SendFactory类就行,如下:view plaincopypublic produceMail() 1. produceSms()测试类如下:factory.produceMail();this is mailsender!33、静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。produceMail()10. SendFactory.produceMail

3、();总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种静态工厂方法模式。2、抽象工厂模式(Abstract Factory)工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因

4、为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。请看例子:两个实现类:两个工厂类:SendMailFactoryProviderproduce()SendSmsFactoryProviderproduce()在提供一个接口:produce();测试类:TestproviderSendMailFactory();provider.produce();其实这个模式的好处就是,如果你现在想增加一个功能:发及时信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现Provider接口,就OK了,无需去改动现成的代码。这样做,拓展性较好!抽象工厂:提供一个创建一系列相关

5、或相互依赖对象的接口,而无需指定它们具体的类3、建造者模式(Builder)工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。我们看一下代码:还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。最后,建造者类如下:例子1:BuilderprivateListlistArrayList();produceMailSender(intcount)for(inti=0;icount;i+)list.add(new

6、MailSender();produceSmsSender(int13. SmsSender();14. 15. 16. builderBuilder();builder.produceMailSender(10);例子2:Builder public interface PersonBuilder void buildHead(); void buildBody(); void buildFoot(); Person buildPerson();ConcreteBuilder public class ManBuilder implements PersonBuilder Person pe

7、rson; public ManBuilder() person = new Man(); public void buildbody() person.setBody(建造男人的身体 public void buildFoot() person.setFoot(建造男人的脚 public void buildHead() person.setHead(建造男人的头 public Person buildPerson() return person;Director(负责人、主管)public class PersonDirector public Person constructPerson

8、(PersonBuilder pb) pb.buildHead(); pb.buildBody(); pb.buildFoot(); return pb.buildPerson();Product public class Person private String head; private String body;private String foot; public String getHead() return head; public void setHead(String head) this.head = head; public String getBody() return

9、body; public void setBody(String body) this.body = body; public String getFoot() return foot; public void setFoot(String foot) this.foot = foot;public class Man extends Person Test public class Test public static void main(String args) PersonDirector pd = new PersonDirector(); Person person = pd.con

10、structPerson(new ManBuilder(); System.out.println(person.getBody(); System.out.println(person.getFoot(); System.out.println(person.getHead();result 建造男人的身体建造男人的脚建造男人的头从这点看出,建造者模式将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。所以与工厂模式的区别就是:工厂模式关注的是创建单个产品,而建造者模式则关注创建复合对象,多个部分。因此,是选择工厂模式还是建造者模式,大家要多多思量。去肯德基吃汉堡,售卖员接单后,可以跟

11、后厨说,先来一个后厨对象,请后厨对象调用你自己的生产奥尔良鸡腿堡初始化类生成一个汉堡(问题在于,其实你只想要一个汉堡,汉堡本身是不会做汉堡的,为了达到目的,你必须硬给他加一个后厨部分,整合成一个对象,才能生产汉堡);或者请厨师Builder帮忙做一个奥尔良鸡腿堡。4、原型模式(Prototype)原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。在Java中,复制对象是通过clone()实现的,先创建一个原型类:PrototypeCloneableObjectclone()throwsClo

12、neNotSupportedExceptionproto(Prototype)super.clone();proto;很简单,一个原型类,只需要实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA或者cloneB,因为此处的重点是super.clone()这句话,super.clone()调用的是Object的clone()方法,而在Object类中,clone()是native的。也可以封装到工厂类中使用首先需要了解对象深、浅复制的概念:浅复制:将一个对象复制后,基本数据类型的

13、变量都会重新创建,而引用类型,指向的还是原对象所指向的。深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。此处,写一个深浅复制的例子:Cloneable,SerializablefinallongserialVersionUID1L;Stringstring;SerializableObjectobj;/*浅复制*/深复制deepClone()IOException,ClassNotFoundException16. 17. 写入当前对象的二进制流18. ByteArrayOutputStreambosByteA

14、rrayOutputStream();19. ObjectOutputStreamoosObjectOutputStream(bos);20. oos.writeObject(this);21. 22. 读出二进制流产生的新对象23. ByteArrayInputStreambisByteArrayInputStream(bos.toByteArray();24. ObjectInputStreamoisObjectInputStream(bis);25. ois.readObject();26. 27. 28. getString()29. 30. 31. 32. setString(Str

15、ingstring)33. this.string34. 35. 36. getObj()37. 38. 39. 40. setObj(SerializableObjectobj)41. this.obj42. 43. 44. 45. 46. class47. 48. 要实现深复制,需要采用流的形式读入当前对象的二进制输入,再写出二进制数据对应的对象。5、单例模式(Singleton)单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。首先我们写一个简单的单例类:Singleton持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载instance私有构造方法,防止被实例化7

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

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