首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

简略工厂

2012-10-17 
简单工厂/** * Description: * br/Copyright (C), 2001-2010, Yeeku.H.Lee * br/This program is prot

简单工厂

/** * 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) {//创建OutputFactoryOutputFactory 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类实现Outputpublic 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]);//把作业队列整体前移一位,并将剩下的作业数减1System.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]);//把作业队列整体前移一位,并将剩下的作业数减1System.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;}}}

热点排行