0 0

设计模式的问题5

现在设计一个小票打印的程序.
小票打印机的型号不固定,有可能更换.
打印的小票的格式也不固定,请问应该如何设计类,使客户代码能够简单的调用.

小票打印机和我们用的一般打印机不太一样,使用方式是给打印机发送命令.
这里我已经奖小票打印机抽象出接口.

但是小票的格式有可能发生改变,我设计的小票类有一个打印方法.小票自己应该怎么打印自己.但是小票的信息和格式都不固定,所以我就办法设计出一个通用的小票类.如果信息固定就很简单了,让不同的小票实现自己的打印方法.但是小票不固定.信息变化了客户代码就变话了,我想知道有没有一个设计模式能解决这个问题.我刚学习模式,也不知道是不是这个地方不适合用模式.
2011年12月08日 19:32

1个答案 按时间排序 按投票排序

0 0

这个设计方案与设计模式关系不大吧,硬要说的话,也可以说用“模板方法”比较合适,就是你已经抽取的小票接口。

其实这个方案的核心问题在于如何根据客户指定的格式(当然,也要规定客户如何指定格式)和信息,打印出相应的小票。

如果是为了方便,可以直接要求小票的内容是图像形式,那样的话,随便客户怎么折腾,打印机都只管打印出图像就行了。尽管由于生成小票图像,速度上可能会有性能问题;但是由于现在打印机的速度相对比较慢,那一点点性能问题应该不会有影响。
有一点要注意:生成大量图像会占用许多内存,所以小票最好不要一次性生成太多,,或者增大 jvm 启动时的内存

这样基本上就可以确定小票的代码了:

public interface Receipt{
   Graphics  getPrintContent(Map context) throws Exception;
}


当然,你需要根据自己的要求再对这个接口进行具体的定制。

你可以看看 java.awt.print.Printable 的代码:

public interface Printable{
 
    int PAGE_EXISTS = 0;
    
    int NO_SUCH_PAGE = 1;

    int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
                 throws PrinterException;
}

2011年12月20日 16:13

相关推荐

    人人都懂设计模式 人人都懂设计模式

    人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...

    24种设计模式以及混合设计模式

    设计模式是软件工程中的一种重要思想,它是在特定情境下,为解决常见问题而形成的一套最佳实践。在本文中,我们将深入探讨24种设计模式,并结合混合设计模式的概念,以及它们在实际项目中的应用案例。 首先,设计...

    Head First 设计模式 +Java设计模式(第2版)

    设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码更易于理解、维护和扩展。这两本书对于Java开发者来说尤其宝贵,因为它们不仅介绍了设计模式的概念,还提供...

    GOF设计模式中英文+设计模式精解中英文

    设计模式是软件工程中的一种重要概念,用于解决在软件开发过程中常见的设计问题,提升代码的可复用性、可维护性和可扩展性。GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John ...

    C#设计模式_C#设计模式_

    对于那些具有丰富的开发经验的开发人员,学习设计模式有助于了解在软件开发过程中所面临的问题的最佳解决方案;对于那些经验不足的开发人员,学习设计模式有助于通过一种简单快捷的方式来学习软件设计。

    设计模式(包含5个设计模式)含源代码报告.rar

    在软件开发领域,设计模式是经过时间和实践验证的解决方案,用于解决常见的编程问题。这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    写完了Interpreter模式之后,我习惯性的看看下一天的安排,却陡然发现GoF的23个设计模式的解析已经在我不经意间写完了。就像在一年前看GoF的《设计模式》一书,和半年前用C++模拟、实现23种经典的设计模式一般,透过...

    新版设计模式手册 - C#设计模式(第二版)

    设计模式是解决软件开发中常见问题的经验总结,是软件工程的最佳实践之一。本手册将详细阐述23种经典设计模式,并结合C#语言特性,给出具体实现和应用示例。 首先,我们来了解一下设计模式的基本概念。设计模式是...

    韩顺平-设计模式1

    例如,可能会涉及到单例模式、工厂模式等常见的设计模式问题。 接着,课程强调了设计模式的重要性。设计模式不仅能够提高代码的可读性和可维护性,还能促进团队之间的沟通,因为它们提供了一套通用的语言和框架。...

    软件设计模式(java版)习题答案.pdf

    设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 设计模式的优点 正确使用设计模式具有以下优点: 1. ...

    MongoDB应用设计模式

    资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...

    设计模式那点事

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、...

    设计模式精讲设计模式精讲

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。在Java开发中,设计模式的应用极大地提高了代码的可维护性、可读性和可复用性。本文主要围绕设计模式的分类、作用以及在J2EE环境...

    设计模式 23种设计模式PPT

    设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 简而言之,在我们处理大量...

    设计模式资料汇总

    此资源包括以下资料: <br>学习GoF设计模式的重要性.txt 设计模式逐个解析.rar 23种设计模式的实现(Java 版).rar DAO设计模式.rar C#设计模式.pdf 新版设计模式手册[C#].pdf JAVA设计模式...

    软件设计模式期末作业

    在软件开发领域,设计模式是经过时间和实践验证的解决方案模板,用于解决常见问题。本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们...

    JavaScript设计模式与开发实践.pdf

    同时,设计模式也可以帮助程序员解决软件设计中的问题,提高软件的质量和可维护性。 在本书中,作者还分享了自己在设计模式方面的研究和实践经验,包括设计模式的原型、设计模式的分类、设计模式的应用等,并提供了...

    设计模式解析

    在编程领域,设计模式是解决常见问题的经过验证的、可重用的解决方案。它们是经验丰富的软件开发者在长期实践中总结出来的智慧结晶,为解决特定情境下的设计问题提供了指导。在Java开发中,掌握设计模式对于提升代码...

    设计模式面试专题及答案.zip

    在面试中,可能会遇到一些常见的设计模式问题,如如何实现单例模式,何时使用工厂模式与抽象工厂模式,如何利用装饰器模式解决实际问题,以及如何根据场景选择合适的设计模式等。 通过学习和理解这些设计模式,...

    设计模式面试专题.zip

    4. 在Java面试中常问的设计模式问题 - 如何实现线程安全的单例模式? - 解释一下工厂模式与抽象工厂模式的区别。 - 装饰器模式与继承的关系是什么?在哪些场景下更适合使用装饰器模式? - 请描述一下如何使用观察者...

Global site tag (gtag.js) - Google Analytics