欢迎来到天天文库
浏览记录
ID:50132120
大小:60.00 KB
页数:19页
时间:2020-03-05
《设计模式课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、课程设计报告一、问题要求及任务描述设计模式课程作业要求独立制作一个软件,功能是实现23种模式的定义、优缺点以及显示示例代码。(一)、题目要求设计软件,将23种设计模式结合,要能够显示每种模式的定义、优缺点以及举例说明例子,加上简单的代码说明。(二)、主要任务主要是选择一种工具,实现显示的功能,整理各种模式的定义,概念、使用情况、以及选择模式实例,代码实现;(三)、典型实例实现(任选三个分属于不同设计模式的实例)1、单例模式定义与结构单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的要点 显然单例模式的要点有三个
2、;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙"和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。静态变量(这是c/c++的叫法,其他语言或有不同)是实现单例模式的要素。单例模式的2种方式:饿汉式,懒汉式单例模式属于对象创建型模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。对一些类来说,只有一个实例是很重要的,虽然系统中可以有许多打印机,但却只应该有一个打印机假脱机,只应该有
3、一个文件系统和一个窗口管理器,一个数字滤波器只能有一个A/D转换器,一个会计系统只能专用于一个公司。怎样才能保证一个类只有一个实例并且这个实例易于被访问,一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象,一个更好的方法是让类自身负责保存他的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法,这就是Singleton模式。UML图:饿汉式,懒汉式classSingleton{privatestaticSingletoninstance=newSingleton();privateSingleton(){}staticSingletongetInst
4、ance(){returninstance;}}懒汉式classSingleton{privatestaticSingletoninstance=null;privateSingleton(){}staticSingletongetInstance(){if(instance==null)instance=newSingleton();returninstance;}}一个产生随机数的例子,整个应用程序中只需要一个类的实例来产生随机数,客户端程序从类中获取这个实例,调用这个实例的方法nextInt(),公用的方法访问需要进行同步,这是单例模式需要解决的同步问题。publicclassSingl
5、eton{privateSingleton(){generator=newRandom();}publicvoidsetSeed(intseed){generator.setSeed(seed);}publicintnextInt(){returngenerator.nextInt();}publicstaticsynchronizedSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}privateRandomgenerator;privatestaticSingletonins
6、tance;}客户端调用的代码:packagesingleton;publicclassClient{publicstaticvoidmain(String[]args){Singletons1=Singleton.getInstance();System.out.println(s1.toString());for(inti=0;i<10;i++){Singletons2=Singleton.getInstance();System.out.println("Therandomednumberis"+s2.toString());}}}2、工厂方法模式定义与结构工厂方法模式的意义是定义一个创
7、建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。工
此文档下载收益归作者所有