简单工厂模式大家并不陌生了,但是实际应用还是比较少的,基本都是实现好的框架内部包含了简单工厂模式,去年在写一个监控平台时候用到了一个实例化系统对象的一个简单工厂,结合面向接口编程这样可以处理不同系统的不同命令,监控平台移植到任何一个系统都不用改代码直接选择相应接口,不多说了具体代码实现如下,只是一点个人心得,需要学习的人可以看看,很牛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. **构造器模式**:将一个复杂对象...
【大一学生工厂实习心得体会】 实习是大学教育中不可或缺的一部分,它为我们提供了将理论知识应用于实际工作的宝贵机会。作为一名大一学生,初次踏入工厂实习,无论是心理还是生理上都是一次全新的挑战。这次实习,...
【工厂实习心得】 实习经历是理解理论知识与实践结合的重要环节,通过在晋工机械的车间实习,我对现代机械制造工业有了深入的认识。实习期间,我主要参与了装载机的装配流程,具体涉及了从车架装配、发动机与变速器...
这次工厂实习经历让我认识到,将理论知识应用于实际工作是一个复杂而充满挑战的过程。在中宏工贸的实习,让我体会到理论与实践相结合的力量,也让我明白只有通过不断的实践和学习,才能将所学的知识转化为解决实际...
今天,我将以《大学生个人工厂实习心得体会》为主题,结合我在XX厂的实习经历,分享我的体验和感悟。 实习初期,我面对的是机械性的“打字工作”,这项工作虽然不涉及复杂的技术操作,但却是对个人耐心和细心的极大...
与经验丰富的老师傅们交流,让我认识到,传统机械设备虽然看起来简单,但每一个部件、每一个环节都蕴含了丰富的技术和工艺知识。 在杭州精密机床厂的实习则让我见识到了制造高精度机械部件的过程。我了解到,高精度...
所谓“聪明工厂”,简单来说,就是利用先进的信息技术和智能化技术对传统制造业进行全方位的改造。这一过程不仅限于生产线上的设备升级,还包括整个生产流程、物流配送、质量控制、售后服务等各个环节的智能化。在...
从给定的文件信息来看,标题和描述都指向了C#的学习心得,这是一门流行的编程语言,广泛应用于Windows应用程序开发、游戏开发(尤其是Unity引擎)、Web应用等场景。下面,我们将深入探讨C#的学习要点,包括其特性、...
- **应用场景**:在Spring中,`BeanFactory` 是简单工厂模式的一个典型例子。它根据提供的唯一标识符来获取Bean对象,从而实现了根据不同的条件创建不同的对象。 - **优势**:提高了代码的灵活性和可扩展性,减少了...
本资源是关于三菱PLC的学习心得,涵盖了三菱PLC的功能指令应用、编程软件、触摸屏编程设计、步进电机工作原理、西门子S7-200结构等多个方面的知识点。 一、功能指令应用 * gx编程软件、仿真软件 * 步进指令、程序...
函数形式的工厂模式是最简单的实现,通过一个函数,根据传入的参数动态决定返回哪个对象的实例。例如,我们可以创建一个工厂函数,该函数根据不同的参数返回不同类的实例。在代码中,我们可能看到switch语句或者if-...
本文主要围绕"J2EE Design and Development"的学习心得展开,探讨如何在JavaEE开发中实现高效且具有可扩展性和可维护性的程序架构设计。 分布式系统是现代企业级应用的基石,尤其是在处理大数据量、高并发场景时,...
4. **会话工厂(SessionFactory)**: 会话工厂是创建会话的工厂,它是线程安全的,通常在应用启动时创建一次。 5. **会话(Session)**: 会话是数据库操作的主要接口,用于执行查询、保存或更新对象等操作。每个...
【金工实习】是工程教育中的重要组成部分,旨在让学生亲手操作工厂设备,了解机械制造的基本流程,提升动手能力和工程素养。实习过程中,学生通过实际操作,不仅锻炼了技能,也深化理解了理论知识的应用。 在金工...
在这篇工作总结中,我将从工厂的规模和管理、木材选用、加工流程、喷漆工艺以及个人实习心得等方面详细阐述我的工作实习情况,以及所获得的知识和体会。 工厂的规模和管理方面,这是一家拥有深厚历史背景且具备现代...
本文以设计模式的学习笔记为背景,结合C#语言,深入探讨了单例模式、工厂模式、建造者模式、原型模式和适配器模式等五种常见设计模式的基本概念、代码实现以及实际应用中的心得与体会。 首先,单例模式是设计模式中...
在这篇实习总结中,我将详细描述在工厂实习过程中对木材选用、加工技术、喷漆加工、镭射与丝印、包装以及五金配件等方面的了解与学习,并分享我的个人心得体会。 木材是家具制作的基础材料,因此,选择合适的木材至...
企业工程与整合的目标心得报告主要围绕企业管理中的优化理论展开,特别是通过分析《目标——简单而有效的常识管理》这本书,提出了企业运营的关键理念。书中的核心思想是“目标”(TOC,Theory of Constraints),这...
在UVM的使用上,书的前九章详细介绍了如何搭建一个简单的UVM验证平台,包括UVM的基本组成部分、组件与对象的定义、UVM树形组织结构、常用类如uvm_object和uvm_component的应用,以及UVM的工厂机制(factory ...