日志记录器(设计模式--工厂方法模式)
当然了,知道工厂方式大家都是很熟悉的方法了。所以我们直接上样例吧。
题目描述:某系统日志记录器要求支持多种日志记录方式,如文件日志记录(FileLog)、数据库日志记录(DatabaseLog)等,且用户可以根据要求动态选择日志记录方式。参考--传送门
实现截图:
UML图:
实际上提取出每一个java文件。保存在同一个包下。最后运行test程序即可。其中Logger接口充当抽象产品,其子类FileLogger和DatabaseLogger充当具体产品,LoggerFactory接口充当抽象工厂,其子类FileLoggerFactory和DatabaseLoggerFactory充当具体工厂。其中可以根据需要自行进行拆分。我们这里的话合并到一个java文件里面。
Logger.java:
LoggerFactory.java:
FileLogger.java:
FileLoggerFactory.java:
DatabaseLogger.java:
DatabaseLoggerFactory.java:
shejian1_Factorymode.java:
package logmatch_Factory_1;
//日志记录器接口:抽象产品
interface Logger {public void writeLog();
}//数据库日志记录器:具体产品
class DatabaseLogger implements Logger {public void writeLog() {System.out.println("已选择数据库日志记录。");}
}//文件日志记录器:具体产品
class FileLogger implements Logger {public void writeLog() {System.out.println("已选择文件日志记录。");}
}//日志记录器工厂接口:抽象工厂
interface LoggerFactory {public Logger createLogger();
}//数据库日志记录器工厂类:具体工厂
class DatabaseLoggerFactory implements LoggerFactory {public Logger createLogger() {//连接数据库,代码省略//创建数据库日志记录器对象Logger logger = new DatabaseLogger();//初始化数据库日志记录器,代码省略return logger;}
}//文件日志记录器工厂类:具体工厂
class FileLoggerFactory implements LoggerFactory {public Logger createLogger() {//创建文件日志记录器对象Logger logger = new FileLogger();//创建文件,代码省略return logger;}
}
public class shijian1_Factorymode {public static void main(String args[]) {LoggerFactory factory;Logger logger1;factory = new FileLoggerFactory(); //可引入配置文件实现logger1 = factory.createLogger();logger1.writeLog();Logger logger2;factory = new DatabaseLoggerFactory(); //可引入配置文件实现logger2 = factory.createLogger();logger2.writeLog();}
}
日志记录器(设计模式--工厂方法模式)相关推荐
- 4. 星际争霸之php设计模式--工厂方法模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- java 工厂方法_java设计模式-工厂方法模式
1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...
- 设计模式 | 工厂方法模式及典型应用
工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法模式让一个类的实例化延迟到其子类. 工厂方法模式又简称为工厂 ...
- python工厂模式 django_python设计模式-工厂方法模式
题目:假设你有一个 pizza 店,功能包括下订单.做 pizza,你的代码会如何写呢? def order_pizza(): pizza = Pizza() pizza.prepare() pizz ...
- 工厂方法模式_1天1个设计模式——工厂方法模式
意图 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型. 问题 假设你正在开发一款物流管理应用.1.0版本只能支持处理卡车运输,因此大部分的代码都位 ...
- [设计模式] ------ 工厂方法模式
工厂方法模式 手机厂造手机,肥皂厂造肥皂,药品厂造药品. 假设有一大类对象A1,A2,A3,A4-他们都有一个共同的父类A A1可以想成是手机,A2可以想成肥皂- (下面例子的A1Factory就是手 ...
- JAVA设计模式 - 工厂方法模式
工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...
- Java设计模式—工厂方法模式抽象工厂模式
工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式. 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...
- C#设计模式--工厂方法模式
0.C#设计模式-简单工厂模式 设计模式: 工厂方法模式(Factory Method Pattern) 介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用 ...
最新文章
- scss安装_安装了这9个免费PS插件后,终于能正常时间下班了……
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- 【Kafka】Kafka-配置参数详解-参数调优
- GDCM:gdcm::Dicts的测试程序
- 解锁环境变量在云原生应用中的各种姿势
- Google 开源的 Android 排版库:FlexboxLayout
- laravel 控制器中使用中间件_在 Laravel 中使用 Slack 进行异常通知
- python基础入门笔记_Python基础入门笔记:函数
- XJTUOJ13 (数论+FFT)
- C#读取网络流,读取网络上的js文件
- Manjaro 常用软件安装
- 灵格斯怎么屏幕取词_灵格斯屏幕取词翻译插件
- python嵩天ppt_嵩天python课程笔记1
- 在线编译器汇总|2020年最新版
- 北斗星通GPS调试记录
- 【论文晨读】一种移动机器人全局最优路径规划算法 孟 偲2008
- 微型计算机处理数据的本质,四川信息职业技术学院2019考纲复习
- python unpacking_Python在unpacking上的一个小陷阱
- java经纬度工具类
- linux中怎样结束进程,linux怎么样终止进程
热门文章
- OKR:制定团队目标的流程
- 【热门主题:魔法少女奈叶动漫主题】
- 连锁门店设备微信云集中监控及告警方案
- 【Java之多线程(二)】(***重要***)Java多线程中常见方法的区别,如object.wait()和Thread.sleep()的区别等
- 改善C#程序的50种方法(转)
- c#对接每人计平台获取数据
- Win10系统电脑开机黑屏一直转圈无法进入桌面怎么办?
- Opencv RotatedRect类中的points、angle、width、height等详解
- 方言听力测试软件,汉语普通话噪声中听力测试材料在不同方言正常人中的应用研究...
- 2017医疗大数据与人工智能报告