`

简单工厂

阅读更多
/**
 * Description:
 * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class Computer
{
	private Output out;

	public Computer(Output out)
	{
		this.out = out;
	}
	//定义一个模拟获取字符串输入的方法
	public void keyIn(String msg)
	{
		out.getData(msg);
	}
	//定义一个模拟打印的方法
	public void print()
	{
		out.out();
	}
	public static void main(String[] args) 
	{
		//创建OutputFactory
		OutputFactory of = new OutputFactory();
		//将Output对象传入,创建Computer对象
		Computer c = new Computer(of.getOutput());
		c.keyIn("轻量级J2EE企业应用实战");
		c.keyIn("Struts2权威指南");
		c.print();
	}
}




/**
 * Description:
 * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public interface Output
{
	//接口里定义的属性只能是常量
	int MAX_CACHE_LINE = 50;
	//接口里定义的只能是public的抽象实例方法
	void out();
	void getData(String msg);
}



/**
 * Description:
 * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class OutputFactory
{
	public Output getOutput()
	{
		//下面两行代码用于控制系统到底使用Output的哪个实现类。
		//return new Printer();
		return new BetterPrinter();
	}
}




/**
 * Description:
 * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */

//让Printer类实现Output
public class Printer implements Output
{
	private String[] printData = new String[MAX_CACHE_LINE];
	//用以记录当前需打印的作业数
	private int dataNum = 0;
	public void out()
	{
		//只要还有作业,继续打印
		while(dataNum > 0)
		{
			System.out.println("打印机打印:" + printData[0]);
			//把作业队列整体前移一位,并将剩下的作业数减1
			System.arraycopy(printData , 1, printData, 0, --dataNum);
		}
	}
	public void getData(String msg)
	{
		if (dataNum >= MAX_CACHE_LINE)
		{
			System.out.println("输出队列已满,添加失败");
		}
		else
		{
			//把打印数据添加到队列里,已保存数据的数量加1。
			printData[dataNum++] = msg;
		}
	}
}


/**
 * Description:
 * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class BetterPrinter implements Output
{
	private String[] printData = new String[MAX_CACHE_LINE * 2];
	//用以记录当前需打印的作业数
	private int dataNum = 0;
	public void out()
	{
		//只要还有作业,继续打印
		while(dataNum > 0)
		{
			System.out.println("高速打印机正在打印:" + printData[0]);
			//把作业队列整体前移一位,并将剩下的作业数减1
			System.arraycopy(printData , 1, printData, 0, --dataNum);
		}
	}
	public void getData(String msg)
	{
		if (dataNum >= MAX_CACHE_LINE * 2)
		{
			System.out.println("输出队列已满,添加失败");
		}
		else
		{
			//把打印数据添加到队列里,已保存数据的数量加1。
			printData[dataNum++] = msg;
		}
	}
}

分享到:
评论

相关推荐

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...

    简单工厂-工厂方法-抽象工厂 对比总结

    本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。 **简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心...

    简单工厂和抽象工厂的Demo

    在软件设计模式中,"简单工厂"和"抽象工厂"是两种常见的创建型设计模式,它们主要用于对象的创建。这两种模式都是为了将对象的创建过程封装起来,使得客户端代码无需关心具体的实现细节,只需调用工厂提供的接口即可...

    利用简单工厂模式,实现简易计算器程序

    【简单工厂模式】是一种常用的创建型设计模式,它提供了一个创建对象的接口,但让子类决定实例化哪一个类。简单工厂模式使代码能够绕过复杂的实例化逻辑,将对象的创建过程封装起来,使客户端代码更加简洁。 在这个...

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    **简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...

    ASP.NET简单工厂实例

    ASP.NET简单工厂模式是一种设计模式,它在软件工程中用于创建对象,特别是在需要根据不同的条件或请求动态选择具体实现时。在这个实例中,我们将探讨如何使用简单工厂模式来实现多数据库支持,允许程序根据需求连接...

    uml 文档 简单工厂模式

    UML文档-简单工厂模式 简单工厂模式是一种专门负责将大量有共同接口的类实例化的模式,而不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。 简单工厂模式的...

    C#简单工厂模式女娲造人

    "C#简单工厂模式女娲造人"这个标题和描述采用了一种形象的比喻,将创建对象的过程比作神话故事中的女娲造人,以帮助理解简单工厂模式的基本概念。 简单工厂模式是一种创建型设计模式,它的核心思想是提供一个工厂类...

    简单工厂模式_简单工厂模式_

    简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。这种模式使得代码能够将实例化的责任封装起来,使得客户端代码无需关心具体的对象实现,只需要知道一个公共接口即可...

    简单工厂模式uml类图

    java设计模式 简单工厂模式uml类图,一张图就让你秒懂简单工厂模式

    Android计算器(简单工厂模式)

    **Android计算器(简单工厂模式)** 简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这个模式中,一个单独的类(被称为工厂)负责创建对象,客户端通过调用工厂方法来获取所需的对象,而无需...

    简单工厂模式学习代码

    简单工厂模式是一种设计模式,它是创建型模式的一种,主要用于简化对象的创建过程。在这个模式中,有一个工厂类负责创建特定类型的对象,而客户端通过调用工厂的方法来获取所需的实例,无需关心具体的创建过程。这种...

    简单工厂设计模式实现的计算器

    简单工厂设计模式是一种常用的设计模式,它在软件工程中用于创建对象,特别是在需要根据特定条件创建不同类的对象时。在这个实现的计算器项目中,我们利用了简单工厂模式,结合了面向对象编程的三大特性——继承、...

    c#工厂模式——简单工厂,抽象工厂,单件模式实例

    C#中的工厂模式分为简单工厂、抽象工厂和单例模式三种,每一种都有其特定的应用场景和优势。 1. **简单工厂模式**: 简单工厂模式是一种静态工厂方法,它创建一个具体的对象而无需暴露创建逻辑。在C#中,我们可以...

    设计模式 简单工厂模式 简易计算器代码

    在“设计模式 简单工厂模式 简易计算器代码”这个主题中,我们将探讨如何使用简单工厂模式来实现一个简单的计算器。计算器是我们日常编程中常见的例子,因为它包含了多个操作,如加、减、乘、除等,这为我们展示了...

    反射简单工厂模式工厂模式

    本文将深入探讨"反射"以及两种常见的工厂模式:"简单工厂模式"和"工厂方法模式",并结合提供的文件名称来解析这些概念。 首先,我们来看"反射"。在Java等面向对象语言中,反射是一种强大的工具,它允许程序在运行时...

    设计模式之从简单工厂到泛型简单工厂

    "设计模式之从简单工厂到泛型简单工厂"这个主题关注的是创建型设计模式,特别是如何逐步改进简单工厂模式以提高其灵活性和可扩展性。简单工厂模式是一种静态工厂方法,用于创建对象,而泛型简单工厂则是对其的一种...

    简单工厂模式Demo

    简单工厂模式是软件设计模式中的一种结构型模式,它提供了一种创建对象的方式,通过一个公共的工厂类来创建对象,而不是直接new实例化。这种模式可以将对象的创建过程封装起来,使得代码更加灵活,同时也降低了...

Global site tag (gtag.js) - Google Analytics