【设计模式】【工厂方法】
2013-01-16 18:08
211 查看
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, 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/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, 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/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, 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; } } }
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, 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 OutputFactory { //仅定义一个方法用于返回输出设备。 Output getOutput(); }
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, 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 PrinterFactory implements OutputFactory { public Output getOutput() { //该工厂只负责产生Printer对象 return new Printer(); } }
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, 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 BetterPrinterFactory implements OutputFactory { public Output getOutput() { //该工厂只负责产生BetterPrinter对象 return new BetterPrinter(); } }
/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2012, 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) { //使用PrinterFactory子类来创建OutputFactory OutputFactory of = new BetterPrinterFactory(); //将Output对象传入,创建Computer对象 Computer c = new Computer(of.getOutput()); c.keyIn("轻量级Java EE企业应用实战"); c.keyIn("疯狂Java讲义"); c.print(); } }
相关文章推荐
- 设计模式—简单工厂、工厂方法、抽象工厂
- 设计模式 之 工厂方法
- 设计模式之Factory(简单工厂和工厂方法)
- (Factory method)工厂方法设计模式
- 设计模式之三:工厂方法模式—多态工厂的实现
- Spring--IoC--Bean的装配--工厂方法设计模式
- 设计模式系列四 工厂(工厂方法、抽象工厂)模式介绍
- 【java】工厂方法设计模式
- 【设计模式】之 透过工厂方法看 抽象类和接口
- 设计模式必知必会:三种工厂方法之对比
- 研磨设计模式之工厂方法模式-1
- 研磨设计模式之工厂方法模式-3 ――跟着cc学设计系列
- 设计模式--简单工厂-工厂方法
- java 设计模式整理之工厂方法(1)
- 设计模式系列一创建型模式之(简单工厂VS工厂方法)
- 设计模式之工厂方法(Factory Method)模式
- 设计模式-工厂方法 简单工厂 抽象工厂 模板方法
- 设计模式(二)——工厂方法
- 二 设计模式之工厂方法模式
- 【设计模式】——简单工厂、工厂方法和抽象工厂