精选设计模式案例分析Word格式文档下载.docx
- 文档编号:14557220
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:47
- 大小:93.15KB
精选设计模式案例分析Word格式文档下载.docx
《精选设计模式案例分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《精选设计模式案例分析Word格式文档下载.docx(47页珍藏版)》请在冰豆网上搜索。
工厂方法模式的结构如图3所示:
图3工厂方法模式结构示意图
Product:
定义工厂方法所创建的对象的接口,也就是实际需要使用的对象的接口。
ConcreteProduct:
具体的Product接口的实现对象。
Creator:
创建器,声明工厂方法,工厂方法通常会返回一个Product类型的实例对象,而且多是抽象方法。
也可以在Creator里面提供工厂方法的默认实现,让工厂方法返回一个缺省的Product类型的实例对象。
ConcreteCreator:
具体的创建器对象,覆盖实现Creator定义的工厂方法,返回具体的Product实例。
工厂方法模式示例代码
(1)先看看Product的定义,示例代码如下:
/**
*工厂方法所创建的对象的接口
*/
publicinterfaceProduct{
//可以定义Product的属性和方法
}
(2)再看看具体的Product的实现对象,示例代码如下:
*具体的Product对象
publicclassConcreteProductimplementsProduct{
//实现Product要求的方法
(3)接下来看看创建器的定义,示例代码如下:
*创建器,声明工厂方法
publicabstractclassCreator{
/**
*创建Product的工厂方法
*@returnProduct对象
protectedabstractProductfactoryMethod();
*示意方法,实现某些功能的方法
publicvoidsomeOperation(){
//通常在这些方法实现中,需要调用工厂方法来获取Product对象
Productproduct=factoryMethod();
}
(4)再看看具体的创建器实现对象,示例代码如下:
*具体的创建器实现对象
publicclassConcreteCreatorextendsCreator{
protectedProductfactoryMethod(){
//重定义工厂方法,返回一个具体的Product对象
returnnewConcreteProduct();
使用工厂方法模式来实现示例
要使用工厂方法模式来实现示例,先来按照工厂方法模式的结构,对应出哪些是被创建的Product,哪些是Creator。
分析要求实现的功能,导出的文件对象接口ExportFileApi就相当于是Product,而用来实现导出数据的业务功能对象就相当于Creator。
把Product和Creator分开过后,就可以分别来实现它们了。
使用工厂模式来实现示例的程序结构如图4所示:
图4使用工厂模式来实现示例的程序结构示意图
下面一起来看看代码实现。
(1)导出的文件对象接口ExportFileApi的实现没有变化,这里就不去赘述了
(2)接下来看看接口ExportFileApi的实现,为了示例简单,只实现导出文本文件格式和数据库备份文件两种。
先看看导出文本文件格式的实现,示例代码如下:
*导出成文本文件格式的对象
publicclassExportTxtFileimplementsExportFileApi{
publicbooleanexport(Stringdata){
//简单示意一下,这里需要操作文件
System.out.println("
导出数据"
+data+"
到文本文件"
);
returntrue;
再看看导出成数据库备份文件形式的对象的实现,示例代码如下:
*导出成数据库备份文件形式的对象
publicclassExportDBimplementsExportFileApi{
//简单示意一下,这里需要操作数据库和文件
到数据库备份文件"
(3)Creator这边的实现,首先看看ExportOperate的实现,示例代码如下:
*实现导出数据的业务功能对象
publicabstractclassExportOperate{
*导出文件
*@paramdata需要保存的数据
*@return是否成功导出文件
publicbooleanexport(Stringdata){
//使用工厂方法
ExportFileApiapi=factoryMethod();
returnapi.export(data);
*工厂方法,创建导出的文件对象的接口对象
*@return导出的文件对象的接口对象
protectedabstractExportFileApifactoryMethod();
(4)加入了两个Creator实现,先看看创建导出成文本文件格式的对象,示例代码如下:
*具体的创建器实现对象,实现创建导出成文本文件格式的对象
publicclassExportTxtFileOperateextendsExportOperate{
protectedExportFileApifactoryMethod(){
//创建导出成文本文件格式的对象
returnnewExportTxtFile();
再看看创建导出成数据库备份文件形式的对象,示例代码如下:
*具体的创建器实现对象,实现创建导出成数据库备份文件形式的对象
publicclassExportDBOperateextendsExportOperate{
//创建导出成数据库备份文件形式的对象
returnnewExportDB();
(5)客户端直接创建需要使用的Creator对象,然后调用相应的功能方法,示例代码如下:
publicclassClient{
publicstaticvoidmain(String[]args){
//创建需要使用的Creator对象
ExportOperateoperate=newExportDBOperate();
//调用输出数据的功能方法
operate.export("
测试数据"
运行结果如下:
导出数据测试数据到数据库备份文件
单态模式
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
性能优化
1.1读取配置文件的内容
考虑这样一个应用,读取配置文件的内容。
很多应用项目,都有与应用相关的配置文件,这些配置文件多是由项目开发人员自定义的,在里面定义一些应用需要的参数数据。
当然在实际的项目中,这种配置文件多采用xml格式的。
也有采用properties格式的,毕竟使用Java来读取properties格式的配置文件比较简单。
现在要读取配置文件的内容,该如何实现呢?
1.2不用模式的解决方案
有些朋友会想,要读取配置文件的内容,这也不是个什么困难的事情,直接读取文件的内容,然后把文件内容存放在相应的数据对象里面就可以了。
真的这么简单吗?
先实现看看吧。
为了示例简单,假设系统是采用的properties格式的配置文件。
(1)那么直接使用Java来读取配置文件,示例代码如下:
Java代码
1/**
2*读取应用配置文件
3*/
4publicclassAppConfig{
5/**
6*用来存放配置文件中参数A的值
7*/
8privateStringparameterA;
9/**
10*用来存放配置文件中参数B的值
11*/
12privateStringparameterB;
13
14publicStringgetParameterA(){
15returnparameterA;
16}
17publicStringgetParameterB(){
18returnparameterB;
19}
20/**
21*构造方法
22*/
23publicAppConfig(){
24//调用读取配置文件的方法
25readConfig();
26}
27/**
28*读取配置文件,把配置文件中的内容读出来设置到属性上
29*/
30privatevoidreadConfig(){
31Propertiesp=newProperties();
32InputStreamin=null;
33try{
34in=AppConfig.class.getResourceAsStream(
35"
AppConfig.properties"
36p.load(in);
37//把配置文件中的内容读出来设置到属性上
38this.parameterA=p.getProperty("
paramA"
39this.parameterB=p.getProperty("
paramB"
40}catch(IOExceptione){
41System.out.println("
装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精选 设计 模式 案例 分析