墨盒接口与实现
package cn.bean; /** * 墨盒接口 * */ public interface Ink { /** * 定义打印采用的颜色的方法。 * @param r 红色值 * @param g 绿色值 * @param b 蓝色值 * @return 返回 */ public String getColor(int r,int g,int b); }
package cn.bean.impl; import java.awt.Color; import cn.bean.Ink; /** * 彩色墨盒。ColorInk 实现 Ink 接口 * */ public class ColorInk implements Ink { //打印采用彩色 @Override public String getColor(int r, int g, int b) { Color color = new Color(r, g, b); return "#"+Integer.toHexString(color.getRGB()).substring(2); } }
package cn.bean.impl; import java.awt.Color; import cn.bean.Ink; /** * 灰色墨盒。GreyInk 实现 Ink 接口 */ public class GreyInk implements Ink { //打印采用灰色 @Override public String getColor(int r, int g, int b) { int c = (r+g+b)/3; Color color = new Color(c, c, c); return "#"+Integer.toHexString(color.getRGB()).substring(2); } }
纸张接口与实现
package cn.bean; /** * 纸张接口 * */ public interface Paper { public static final String NEW_LIKE = "\r\n"; /** * 输出一个字符得到纸张 * @param c */ public void putInChar(char c); /** * 得到输出到纸张上的内容 * @return */ public String getContent(); }
package cn.bean.impl; import cn.bean.Paper; /** * 文本打印纸张实现。TextPaper 实现 Paper 接口 * */ public class TextPaper implements Paper { //每行字符数 private int charPerLine = 16; //每页行数 private int linePerPage = 5; //纸张中内容 private String content = ""; //当前横向位置,从 0 到 charPerLine-1 private int posX = 0; //当前行数,从 0 到 linePerPage-1 private int posY = 0; //当前页数 private int posP = 1; @Override public String getContent() { String ret = this.content; //补齐本页空行,并显示页码 if(!(posX == 0 && posY==0)){ int color = linePerPage - posY; for(int i=0;i<color;++i){ ret += Paper.NEW_LIKE; } ret += "==第"+posP+"页=="; } return ret; } @Override public void putInChar(char c) { content +=c; ++posY; //判断是否换行 if(posX == charPerLine){ content += Paper.NEW_LIKE; posX = 0; ++posY; } //判断是否翻页 if(posY ==linePerPage){ content +="==第"+posP+"页=="; content += Paper.NEW_LIKE+Paper.NEW_LIKE; posY=0; ++posP; } } //setter 方法,用于属性注入 public void setCharPerLine(int charPerLine) { this.charPerLine = charPerLine; } //setter 方法,用于属性注入 public void setLinePerPage(int linePerPage) { this.linePerPage = linePerPage; } }
打印机
package cn.bean; /** * 打印机 */ public class Printer { //面向接口编程,而不是具体的实现类 private Ink ink = null; //面向接口编程,而不是具体的实现类 private Paper paper = null; /** * 设值注入所需的 setter 方法 * @param ink 传入墨盒参数 */ public void setInk(Ink ink) { this.ink = ink; } /** * 设值注入所需的 setter 方法 * @param paper 传入纸张参数 */ public void setPaper(Paper paper) { this.paper = paper; } /** * 打印机打印方法 * @param str 传入打印内容 */ public void print(String str){ //输出颜色标记 System.out.println("使用"+ink.getColor(255, 200, 0)+"颜色打印:\n"); //逐字符输出到纸张 for(int i=0; i < str.length();++i){ paper.putInChar(str.charAt(i)); } //将纸张的内容输出 System.out.println(paper.getContent()); } }
applicationContext.xml 配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <bean id="colorInk" class="cn.bean.impl.ColorInk"> <description>彩色墨盒</description> </bean> <bean id="greyInk" class="cn.bean.impl.GreyInk"> <description>黑白墨盒</description> </bean> <bean id="a3" class="cn.bean.impl.TextPaper"> <description>纸张</description> <property name="charPerLine" value="6"></property> <property name="linePerPage" value="4"></property> </bean> <bean id="b4" class="cn.bean.impl.TextPaper"> <description>纸张</description> <property name="charPerLine" value="5"></property> <property name="linePerPage" value="3"></property> </bean> <bean id="printer1" class="cn.bean.Printer"> <description>打印机</description> <property name="ink" ref="colorInk"></property> <property name="paper" ref="a3"></property> </bean> <bean id="printer2" class="cn.bean.Printer"> <description>打印机</description> <property name="ink" ref="greyInk"></property> <property name="paper" ref="b4"></property> </bean> </beans>
测试打印机
package cn.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.bean.Printer; public class TestPrinter { public static void main(String[] args) { //打开 spring 上下文,打开容器,参数是配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //从容器中取出 JavaBean Printer printer1 = (Printer) context.getBean("printer1"); printer1.print("补齐本页空行,并显示页码补齐空行,并显示页码补齐本页空行,并显示页码补齐本页空行"); System.out.println(); Printer printer2 = (Printer) context.getBean("printer2"); printer2.print("补齐本页空行,并显示页码补齐空行,并显示页码补齐本页空行,并显示页码补齐本页空行"); } }
效果图:
相关推荐
本教程将深入探讨如何利用Spring框架来实现一个打印机功能,这对于初学者掌握Spring的核心概念非常有帮助。 首先,我们需要理解什么是依赖注入。在传统的编程模式中,对象通常会自行创建或查找其依赖的对象,这可能...
【标题】:“自己动手模拟spring” 【描述】:在该主题中,我们将深入理解Spring框架的核心概念,并通过编码实践来模拟其工作原理。参考链接提供了一个CSDN博客文章,作者详细介绍了如何从零开始创建一个简易版的...
在这个“Spring实现的一个打印机”的项目中,我们可以深入探讨Spring如何帮助实现一个打印机服务,并从中学习Spring的相关知识点。 首先,我们要理解Spring的核心概念——依赖注入(DI)。在传统的Java程序中,对象...
Spring 案例打印机的实现过程详解是一篇关于 Spring 框架在打印机应用中的实现过程的文章,这篇文章通过示例代码对 Spring 案例打印机的实现过程进行了详细的介绍,对大家的学习或者工作具有一定的参考学习价值。...
在本文中,我们将深入探讨如何使用Spring的Inversion of Control(IoC)容器来实现一个具体的案例:控制打印机(Printer)类与不同类型的纸张(Paper)类的交互。Spring的IoC允许我们解耦组件,使代码更加灵活且易于...
得力DL-730K打印机驱动程序是一款可以有效解决得力DL-730K打印机在使用过程中出现的一些问题的驱动工具,本站提供了得力DL-730K打印机驱动下载地址,有需要的朋友们可以前来下载使用。 得力DL-730K是由得力推出的一...
2. 创建一个实现了`Printer`接口的具体打印机类,例如`ConcretePrinter`。 3. 使用`@Component`注解标记`ConcretePrinter`,将其注册到Spring容器中。 4. 定义一个切面类,包含切面逻辑,比如`PrintingAspect`,并...
在Java代码中,我们通常会利用依赖注入框架(如Spring)来管理这些打印机对象,以便在需要的时候动态地选择和使用特定类型的打印机。这可以通过配置文件或注解来完成,使得代码更加模块化,易于测试和调整。 为了...
【打印机管理网(Java Web+Bootstrap)】 打印机管理网是一个基于Java Web技术和Bootstrap前端框架构建的应用,旨在提供高效、友好的打印机管理和监控解决方案。这个项目融合了后端的Java技术与前端的响应式设计,...
串口通信广泛应用于物联网(IoT)设备、嵌入式系统、自动化设备等,通过串口可以与外部硬件设备交换数据,如传感器、打印机、PLC等。 “spring-boot-rxtx”标签进一步证实了这个项目是将Rxtx库集成到Spring Boot应用...
Spring Integration是一个轻量级的、用于构建企业级应用集成解决方案的框架,可以方便地将打印机功能与其他系统(如数据库、Web服务等)集成。利用其提供的事件驱动模型,开发者可以轻松地创建出灵活的、可扩展的...
一个组织单元可能包含诸如所有雇员、大楼内的所有打印机等信息。 LDAP 的对象类别(ObjectClass) LDAP 支持对条目能够和必须支持哪些属性进行控制,这是有一个特殊的称为对象类别(ObjectClass)的属性来实现的。...
标题中的“Sring实现打印机”很可能是一个拼写错误,正确的应该是“Spring实现打印机”。这个标题表明我们将探讨如何利用Spring框架来构建一个打印机相关的应用程序。在Java编程中,Spring是一个广泛使用的开源框架...
在实际的打印机应用程序中,Spring可以帮助我们构建可扩展且易于维护的服务,用于处理打印任务,如文档预览、队列管理以及错误处理。 【标签】"ACCP8.0" ACCP8.0是Advanced Certified Computer Professional的第8...
本文将详细阐述一种解决方案,该方案基于Java技术栈,利用Spring Boot框架开发服务端程序,并结合Zebra GT820打印机的特性,实现在仅有USB数据线连接的情况下,通过后台程序远程控制不同PC设备上的打印机实时打印。...
在IT行业中,Spring Boot是一个非常流行的Java开发框架,它简化了Spring应用的初始搭建以及开发过程。本主题将深入探讨如何在Spring Boot项目中整合二维码(QR Code)和条形码(Barcode)生成功能,这对于现代移动...
基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC...
SSH 整合是指Struts、Spring和Hibernate三个开源框架的集成,这种整合在Java Web开发中非常常见,用于构建高效、灵活的企业级应用。Struts提供了MVC(模型-视图-控制器)架构,Spring负责依赖注入和事务管理,而...
- QC3-6212-0001:张力弹簧(SPRING, TENTION),它与MG3500系列打印机共享。 - QC3-6210-0001:定时缝条(FILM, TIMING SLIT STRIP),通用。 - QM4-2912-0001:滑动架单元(CARRIAGE UNIT),专用。 - QM4-2914-...