`
qyhdt
  • 浏览: 15072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于简单工厂应用的心得

    博客分类:
  • JAVA
阅读更多
简单工厂模式大家并不陌生了,但是实际应用还是比较少的,基本都是实现好的框架内部包含了简单工厂模式,去年在写一个监控平台时候用到了一个实例化系统对象的一个简单工厂,结合面向接口编程这样可以处理不同系统的不同命令,监控平台移植到任何一个系统都不用改代码直接选择相应接口,不多说了具体代码实现如下,只是一点个人心得,需要学习的人可以看看,很牛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();//关闭操作系统,不同操作系统调用不同命令。
	}
}


分享到:
评论

相关推荐

    asp.net知识库

    .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...

    设计模式(Patterns in Java)

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多 人更容易理解GoF 的《设计模式》。由于原著都是以C++为例,以Java 为例的设计模式 基本又都以图形应用为例,而我们更关心Java 在...

    二十三种设计模式【PDF版】

    关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用, 甚至有人提倡"蓝领程序员",这些都是对现代编程技术的不了解所至. 在...

    单片机课程设计led流水灯设计报告.doc

    在各种大型电器中的模块化应用 :如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理) ,就需要复杂的类似于计算机的原理。 本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从...

    DIY制作——8位VFD显示屏GPS时钟(制作心得+原理图+PCB等)-电路方案

    12、有DS1302实时时钟芯片(正宗的能弄到只有拆机的了),外接正品日本KDS 5ppm晶振(这个好不容易找工厂朋友弄到,厂家仪表进行过筛选) 13、母钟的同步子钟/GPS同步时钟/普通时钟,大家可以根据自己的需要,选择...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    这位与Microsoft .NET开发团队合作长达8年时间的资深顾问,在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序...

    CLR.via.C#.(中文第3版)(自制详细书签)

    这位与Microsoft .NET开发团队合作长达8年时间的资深顾问,在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序...

    OV7670摄像头,机器人视觉图像处理(颜色跟踪与识别)-电路方案

    广泛应用在机器视觉、工业通讯、汽车多媒体、医疗影像、工厂自动化、工业物联网等领域。 https://www.eefocus.com/resource/advantech/index.p... 前言: 使用单片机方案的简单图像处理在很多情况下有应用,比如颜色...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    这位与Microsoft .NET开发团队合作长达8年时间的资深顾问,在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    这位与Microsoft .NET开发团队合作长达8年时间的资深顾问,在本书中和读者分享他编程生涯中积累的所有丰富经验和心得,他的独到、睿智的见解,他的远见卓识,为开发人员构建健壮、可靠和具有良好响应能力的应用程序...

    ERP学习必看课件,详细的讲解了ERP的内容

    中国企业在工厂管理上花了很大力气,如降耗、减员增效等,但都不系统,就事论事,是间断性的、表面的,没有总结内在的规律。 中国企业既要考虑自身体制的转换和管理的加强,又要适应市场的快速变化。因此,提高...

Global site tag (gtag.js) - Google Analytics