zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然轻量级JAVA EE企业应用开发Struts2Sping4Hibernate整合开发学习笔记:企业应用开发的思考和策略_SimpleFactory

    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, 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-2016, 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("轻量级Java EE企业应用实战");
            c.keyIn("疯狂Java讲义");
            c.print();
        }
    }
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, 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-2016, 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/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, 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;
            }
        }
    }
  • 相关阅读:
    measure time program
    Visual Studio Code 好用的 source code editor
    tmux
    singleTask, singleInstance使用心得
    IIS7中配置FastCGI运行PHP
    Node.js入门
    Excel的文件打开特别慢,xls文件特别大解决一例
    SQL Server开启READ_COMMITTED_SNAPSHOT
    [转]最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等本文出处
    “VS2013无法连接远程数据库”解决方案
  • 原文地址:https://www.cnblogs.com/tszr/p/12376561.html
Copyright © 2011-2022 走看看