简单工厂模式大家并不陌生了,但是实际应用还是比较少的,基本都是实现好的框架内部包含了简单工厂模式,去年在写一个监控平台时候用到了一个实例化系统对象的一个简单工厂,结合面向接口编程这样可以处理不同系统的不同命令,监控平台移植到任何一个系统都不用改代码直接选择相应接口,不多说了具体代码实现如下,只是一点个人心得,需要学习的人可以看看,很牛X的鼻祖就免啦。首先是一个系统接口
package com.rose.common.frame.factory;
/**
* <p>Title: 运营监控插件 系统模块</p>
* <p>Description: 系统信息</p>
* <p>Copyright: Copyright (c) 2009</p>
* @author qiuy
* @version 1.0
*/
public interface SystemService {
/**
* <p>重启操作系统</p>
*/
void restartSystem();
/**
* <p>关闭操作系统</p>
*/
void shutdownSystem();
/**
* <p>重启应用系统</p>
*/
void restartApplicationSystem();
/**
* <p>关闭应用系统</p>
*/
void shutdownApplicationSystem();
/**
* <p>取消命令</p>
*/
void rollbackCommand();
/**
* <p>输出最后100行日志</p>
* @return StringBuffer 日志字符串
*/
public StringBuffer getLastIndex100Log(int index,String date);
}
接下来是一个window系统的接口实现类
package com.rose.common.frame.factory;
public class WindowsSystemServiceImpl implements SystemService {
public void restartSystem() {
}
public void shutdownSystem() {
}
public void restartApplicationSystem() {
}
public void shutdownApplicationSystem() {
}
public void rollbackCommand() {
}
public StringBuffer getLastIndex100Log(int index,String date) {
return null;
}
public static void main(String[] args) {
}
}
下面是linux系统的接口实现类
package com.rose.common.frame.factory;
public class LinuxSystemServiceImpl implements SystemService {
public void restartSystem() {
}
public void shutdownSystem() {
}
public void rollbackCommand() {
}
public void restartApplicationSystem() {
}
public void shutdownApplicationSystem() {
}
public StringBuffer getLastIndex100Log(int index,String date) {
return null;
}
}
下面就是一个简单工厂获得系统实例
package com.rose.common.frame.factory;
import java.io.IOException;
/**
* @author qiuy
*/
public class SystemInstanceFactory {
private static SystemService systemService;
public static SystemService getSystemService() {
return systemService;
}
public static void setSystemService(SystemService systemService) {
SystemInstanceFactory.systemService = systemService;
}
/**
* <p>获取系统实例</p>
* @return
* @throws IOException
*/
public static SystemService getSystemInstance() throws IOException{
String strOSName = System.getProperty("os.name");
if (systemService == null) {
if(strOSName.toLowerCase().startsWith("windows")) {
systemService = new WindowsSystemServiceImpl(); //创建windows系统实例
}else if(strOSName.toLowerCase().startsWith("linux")) {
systemService = new LinuxSystemServiceImpl(); //创建linux系统实例
}else {
throw new IOException("unknown operating system: " + strOSName);
}
}
return systemService;
}
}
ok以上代码就是一个典型的简单工厂应用,个人认为这样写很实用,测试代码如下。
package com.rose.common.frame.factory;
import java.io.IOException;
public class TestFactory {
public static void main(String[] args) {
SystemService systemService = null;
try {
systemService = SystemInstanceFactory.getSystemInstance();
} catch (IOException e) {
e.printStackTrace();
}
systemService.shutdownSystem();//关闭操作系统,不同操作系统调用不同命令。
}
}
分享到:
相关推荐
简单工厂模式是工厂模式的一种变体,适用于创建对象的类相对较少且固定的情况。 3. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 4. **构造器模式**:将一个复杂对象...
理论知识虽然重要,但在实际应用中,必须根据具体情况进行调整,不能简单地将书本知识直接应用到生产中。这不仅可能导致效果不佳,还可能造成资源浪费和经济损失。因此,学习者应当注重理论与实践的结合,通过实地...
【大一学生工厂实习心得体会】 实习是大学教育中不可或缺的一部分,它为我们提供了将理论知识应用于实际工作的宝贵机会。作为一名大一学生,初次踏入工厂实习,无论是心理还是生理上都是一次全新的挑战。这次实习,...
【工厂实习心得】 实习经历是理解理论知识与实践结合的重要环节,通过在晋工机械的车间实习,我对现代机械制造工业有了深入的认识。实习期间,我主要参与了装载机的装配流程,具体涉及了从车架装配、发动机与变速器...
实习使学生们意识到,理论知识不能简单地套用到实际生产中,必须结合具体情境灵活应用,避免造成不必要的损失。 实习不仅是理论知识的实践化,也是个人能力的提升。通过实地观察和操作,学生们弥补了理论学习中的...
### JFreeChart在JSP开发中的应用心得 #### 一、引言 随着Web技术的飞速发展,基于互联网的应用程序不再局限于简单的静态内容展示,而是越来越多地涉及到复杂的数据交互和动态内容呈现。传统的应用程序,如报表...
从给定的文件信息来看,标题和描述都指向了C#的学习心得,这是一门流行的编程语言,广泛应用于Windows应用程序开发、游戏开发(尤其是Unity引擎)、Web应用等场景。下面,我们将深入探讨C#的学习要点,包括其特性、...
- **应用场景**:在Spring中,`BeanFactory` 是简单工厂模式的一个典型例子。它根据提供的唯一标识符来获取Bean对象,从而实现了根据不同的条件创建不同的对象。 - **优势**:提高了代码的灵活性和可扩展性,减少了...
本资源是关于三菱PLC的学习心得,涵盖了三菱PLC的功能指令应用、编程软件、触摸屏编程设计、步进电机工作原理、西门子S7-200结构等多个方面的知识点。 一、功能指令应用 * gx编程软件、仿真软件 * 步进指令、程序...
【标题】和【描述】提及的是一个关于2022年工厂毕业个人工作实习的总结报告,这份报告可能包含了多位实习生的经历。从【标签】"工作编"来看,这是一个与工作相关的文档,可能是对实习经历的汇编。【部分内容】详细...
函数形式的工厂模式是最简单的实现,通过一个函数,根据传入的参数动态决定返回哪个对象的实例。例如,我们可以创建一个工厂函数,该函数根据不同的参数返回不同类的实例。在代码中,我们可能看到switch语句或者if-...
本文主要围绕"J2EE Design and Development"的学习心得展开,探讨如何在JavaEE开发中实现高效且具有可扩展性和可维护性的程序架构设计。 分布式系统是现代企业级应用的基石,尤其是在处理大数据量、高并发场景时,...
4. **会话工厂(SessionFactory)**: 会话工厂是创建会话的工厂,它是线程安全的,通常在应用启动时创建一次。 5. **会话(Session)**: 会话是数据库操作的主要接口,用于执行查询、保存或更新对象等操作。每个...
【金工实习】是工程教育中的重要组成部分,旨在让学生亲手操作工厂设备,了解机械制造的基本流程,提升动手能力和工程素养。实习过程中,学生通过实际操作,不仅锻炼了技能,也深化理解了理论知识的应用。 在金工...
企业工程与整合的目标心得报告主要围绕企业管理中的优化理论展开,特别是通过分析《目标——简单而有效的常识管理》这本书,提出了企业运营的关键理念。书中的核心思想是“目标”(TOC,Theory of Constraints),这...
在UVM的使用上,书的前九章详细介绍了如何搭建一个简单的UVM验证平台,包括UVM的基本组成部分、组件与对象的定义、UVM树形组织结构、常用类如uvm_object和uvm_component的应用,以及UVM的工厂机制(factory ...
实习旨在增强对机电工程的理解,通过实地考察和参与杭州通用机床厂、杭州精密机床厂等几家工厂的生产流程,了解实际应用中的传感器技术、电子技术、精密机械制造以及液压系统等专业知识。 【关键词】:生产实习、...
【数控车床培训心得体会】 数控车床是一种自动化程度较高、精度和效率都非常出色的金属切削设备,广泛应用于精密零部件的制造。本次培训主要是为了提升学员的技能等级,以适应数控机床操作工的鉴定考试需求。培训...
在JavaEE实验中,我们深入探索了企业级Java应用程序的开发和实现,涵盖了广泛的主题,包括Servlet、JSP、JDBC、EJB、Spring、Hibernate等核心组件和技术。这次实验旨在提升我们的编程技能,理解Web应用程序的架构,...
### Linux内核阅读心得 #### 一、Linux内核启动-内核的生成 Linux内核启动是一个复杂而有序的过程,从硬件初始化到最后内核完全加载并运行,涉及多个步骤和技术细节。 - **BIOS阶段**:计算机启动时,首先执行的...