`
chaoyi
  • 浏览: 309202 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring 打印机

 
阅读更多

墨盒接口与实现

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("补齐本页空行,并显示页码补齐空行,并显示页码补齐本页空行,并显示页码补齐本页空行");
	}

}

 

效果图:

 

 

  • 大小: 26.2 KB
  • 大小: 29.9 KB
分享到:
评论

相关推荐

    利用spring实现打印机

    本教程将深入探讨如何利用Spring框架来实现一个打印机功能,这对于初学者掌握Spring的核心概念非常有帮助。 首先,我们需要理解什么是依赖注入。在传统的编程模式中,对象通常会自行创建或查找其依赖的对象,这可能...

    自己动手模拟spring

    【标题】:“自己动手模拟spring” 【描述】:在该主题中,我们将深入理解Spring框架的核心概念,并通过编码实践来模拟其工作原理。参考链接提供了一个CSDN博客文章,作者详细介绍了如何从零开始创建一个简易版的...

    Spring实现的一个打印机

    在这个“Spring实现的一个打印机”的项目中,我们可以深入探讨Spring如何帮助实现一个打印机服务,并从中学习Spring的相关知识点。 首先,我们要理解Spring的核心概念——依赖注入(DI)。在传统的Java程序中,对象...

    Spring案例打印机的实现过程详解

    Spring 案例打印机的实现过程详解是一篇关于 Spring 框架在打印机应用中的实现过程的文章,这篇文章通过示例代码对 Spring 案例打印机的实现过程进行了详细的介绍,对大家的学习或者工作具有一定的参考学习价值。...

    Spring的IoC实现案例

    在本文中,我们将深入探讨如何使用Spring的Inversion of Control(IoC)容器来实现一个具体的案例:控制打印机(Printer)类与不同类型的纸张(Paper)类的交互。Spring的IoC允许我们解耦组件,使代码更加灵活且易于...

    得力DL-730K打印机驱动程序v1.0官方版

    得力DL-730K打印机驱动程序是一款可以有效解决得力DL-730K打印机在使用过程中出现的一些问题的驱动工具,本站提供了得力DL-730K打印机驱动下载地址,有需要的朋友们可以前来下载使用。 得力DL-730K是由得力推出的一...

    Spring示例_Printer_Spring_AOP_Spring_Proxy

    2. 创建一个实现了`Printer`接口的具体打印机类,例如`ConcretePrinter`。 3. 使用`@Component`注解标记`ConcretePrinter`,将其注册到Spring容器中。 4. 定义一个切面类,包含切面逻辑,比如`PrintingAspect`,并...

    组装打印机

    在Java代码中,我们通常会利用依赖注入框架(如Spring)来管理这些打印机对象,以便在需要的时候动态地选择和使用特定类型的打印机。这可以通过配置文件或注解来完成,使得代码更加模块化,易于测试和调整。 为了...

    打印机管理网(Java Web+Bootstrap)

    【打印机管理网(Java Web+Bootstrap)】 打印机管理网是一个基于Java Web技术和Bootstrap前端框架构建的应用,旨在提供高效、友好的打印机管理和监控解决方案。这个项目融合了后端的Java技术与前端的响应式设计,...

    spring-boot-rxtx.zip

    串口通信广泛应用于物联网(IoT)设备、嵌入式系统、自动化设备等,通过串口可以与外部硬件设备交换数据,如传感器、打印机、PLC等。 “spring-boot-rxtx”标签进一步证实了这个项目是将Rxtx库集成到Spring Boot应用...

    T120II网络接口T500E网络口打印机驱动及IP设置(新版本202112)(1).zip

    Spring Integration是一个轻量级的、用于构建企业级应用集成解决方案的框架,可以方便地将打印机功能与其他系统(如数据库、Web服务等)集成。利用其提供的事件驱动模型,开发者可以轻松地创建出灵活的、可扩展的...

    Spring Boot中使用LDAP来统一管理用户信息的示例

    一个组织单元可能包含诸如所有雇员、大楼内的所有打印机等信息。 LDAP 的对象类别(ObjectClass) LDAP 支持对条目能够和必须支持哪些属性进行控制,这是有一个特殊的称为对象类别(ObjectClass)的属性来实现的。...

    Sring实现打印机

    标题中的“Sring实现打印机”很可能是一个拼写错误,正确的应该是“Spring实现打印机”。这个标题表明我们将探讨如何利用Spring框架来构建一个打印机相关的应用程序。在Java编程中,Spring是一个广泛使用的开源框架...

    spring_lession5

    在实际的打印机应用程序中,Spring可以帮助我们构建可扩展且易于维护的服务,用于处理打印任务,如文档预览、队列管理以及错误处理。 【标签】"ACCP8.0" ACCP8.0是Advanced Certified Computer Professional的第8...

    在只有usb数据线连接打印机的情况下,实现后台程序调用不同pc设备上的打印机实现实时打印! 打印机型号:zebra GT820

    本文将详细阐述一种解决方案,该方案基于Java技术栈,利用Spring Boot框架开发服务端程序,并结合Zebra GT820打印机的特性,实现在仅有USB数据线连接的情况下,通过后台程序远程控制不同PC设备上的打印机实时打印。...

    spring boot整合二维码和条形码

    在IT行业中,Spring Boot是一个非常流行的Java开发框架,它简化了Spring应用的初始搭建以及开发过程。本主题将深入探讨如何在Spring Boot项目中整合二维码(QR Code)和条形码(Barcode)生成功能,这对于现代移动...

    基于IOC实现的打印机案例.zip

    基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC实现的打印机案例 基于IOC...

    ssh整合详解

    SSH 整合是指Struts、Spring和Hibernate三个开源框架的集成,这种整合在Java Web开发中非常常见,用于构建高效、灵活的企业级应用。Struts提供了MVC(模型-视图-控制器)架构,Spring负责依赖注入和事务管理,而...

    佳能E568维修手册

    - QC3-6212-0001:张力弹簧(SPRING, TENTION),它与MG3500系列打印机共享。 - QC3-6210-0001:定时缝条(FILM, TIMING SLIT STRIP),通用。 - QM4-2912-0001:滑动架单元(CARRIAGE UNIT),专用。 - QM4-2914-...

Global site tag (gtag.js) - Google Analytics