Java面向接口编程之简单工厂模式示例

 更新时间:2019年09月25日 11:39:22   作者:cakincqm  
这篇文章主要介绍了Java面向接口编程之简单工厂模式,结合实例形式详细分析了java面向接口编程简单工厂模式的具体定义与使用方法,需要的朋友可以参考下

本文实例讲述了Java面向接口编程之简单工厂模式。分享给大家供大家参考,具体如下:

一 代码

interface Output
{
  // 接口里定义的成员变量只能是常量
  int MAX_CACHE_LINE = 50;
  // 接口里定义的普通方法只能是public的抽象方法
  void out();
  void getData( String msg );
}
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;
    }
  }
}
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;
    }
  }
}
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 class OutputFactory
{
  public Output getOutput()
  {
//  return new Printer();
    return new BetterPrinter();
  }
  public static void main(String[] args)
  {
    OutputFactory of = new OutputFactory();
    Computer c = new Computer(of.getOutput());
    c.keyIn("轻量级Java EE企业应用实战");
    c.keyIn("疯狂Java讲义");
    c.print();
  }
}

二 运行

高速打印机正在打印:轻量级Java EE企业应用实战
高速打印机正在打印:疯狂Java讲义

三 类图

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • 基于mybatis查询结果映射不到对象的处理

    基于mybatis查询结果映射不到对象的处理

    这篇文章主要介绍了mybatis查询结果映射不到对象的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java中ArrayList的常见用法示例小结

    Java中ArrayList的常见用法示例小结

    本文介绍了Java的ArrayList,它是一个动态数组,可以自动调整大小,支持添加、删除、获取元素等操作,同时,还讨论了如何存储基本数据类型以及在多线程环境下的使用注意事项,感兴趣的朋友一起看看吧
    2025-02-02
  • 举例详解Java中的访问权限修饰符

    举例详解Java中的访问权限修饰符

    这篇文章主要介绍了举例详解Java中的访问权限修饰符,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • Java中逆序遍历List集合的实现

    Java中逆序遍历List集合的实现

    本文主要介绍了Java中逆序遍历List集合的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Java的Collection集合的常用方法详解

    Java的Collection集合的常用方法详解

    这篇文章主要为大家详细介绍了Java的Collection集合的常用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 如何将复杂SQL转换成Java对象的实例讲解

    如何将复杂SQL转换成Java对象的实例讲解

    转换复杂SQL到Java代码,我们需要确定数据库连接方式和工具,使用JDBC的API来连接数据库、执行SQL语句,复杂SQL语句可以被拆分为多个步骤,每个步骤执行一个特定的操作,通过将SQL语句拆分为多个步骤,我们可以更好地理解复杂SQL的逻辑,并且更容易将其转换为Java代码
    2024-05-05
  • Java文件操作实例详解

    Java文件操作实例详解

    这篇文章主要为大家详细介绍了Java文件操作实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Java直接输出对象变成@.....的问题及解决

    Java直接输出对象变成@.....的问题及解决

    这篇文章主要介绍了Java直接输出对象变成@.....的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Spring Boot项目利用Redis实现集中式缓存实例

    Spring Boot项目利用Redis实现集中式缓存实例

    本篇文章主要介绍了Spring Boot项目利用Redis实现集中式缓存实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • java开发validate方法中校验工具类详解

    java开发validate方法中校验工具类详解

    这篇文章主要为大家介绍了java开发validate方法中校验工具类详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09

最新评论