public class ReportService {
private ReportGenerator generator = new PdfReportGenerator();
private int[][] data = new int[50][50];
public void generateAnnulReport(){
generator.generate(data);
}
public void generateMonthlyReport(){
generator.generate(data);
}
public void generateDailyReport(){
generator.generate(data);
}
}
public interface ReportGenerator {
public void generate(int[][] data);
}
public class HtmlReportGenerator implements ReportGenerator{
public void generate(int[][] data) {
System.out.println("HtmlReportGenerator");
}
}
public class PdfReportGenerator implements ReportGenerator {
public void generate(int[][] data) {
System.out.println("PdfReportGenerator");
}
}
这种设计,高层的ReportService依赖了底层的PdfReportGenerator和ReportGenerator类,还不是很好,一旦希望使用HtmlReportGenerator,那么就必须修改ReportService类。
分享到:
相关推荐
类设计方法大全!类设计方法大全!类设计方法大全!类设计方法大全!
本文将围绕"射频功放设计-E类功放分析与设计"这一主题,详细阐述E类功放的工作原理、设计挑战及优化策略。 E类功放,又称为开关模式功率放大器,其工作状态位于线性区和截止区之间,主要利用开关器件(如MOSFET或...
设计一个产品类 Product ,允许通过如下方式来创建产品对象: 通过指定产品名创建; 通过指定产品名和产品价格创建; 通过指定产品名、产品价格、出厂日期(对象成员)创建; Product 还应该包含如下属性:生产厂家...
1. 类设计:通常会创建一个自定义的Socket类,如TcpSocket和UdpSocket,封装Socket的基本操作,如连接、断开、发送和接收数据,以及错误处理等。 2. 数据传输:在封装类中,可以设计方法用于包装和解包数据,例如将...
题目:设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现虚函数调用,输出点类、圆类和圆柱体类面积。提示:其他数据成员和...
本设计通过定义字符串类,实现了对字符串的赋值、连接、复制、查找、交换操作,提供了一个基本的字符串类设计方案,为后续的开发和应用提供了参考和借鉴。 六、参考文献 * C++ Primer Plus(第五版) * C++程序...
要求该软件包至少拥有三角形类、正方形类、圆类和正五边形类。每个类都要具有构造方法,而且可以构造任意的一般图形。例如:要求通过三角形类的构造方法可以创建在任意位置上的一般三角形。要求每个类都含有计算该...
C++本科毕业设计C++程序设计类课程教学辅助系统的设计与实现源码。附演示视频。C++本科毕业设计C++程序设计类课程教学辅助系统的设计与实现源码。附演示视频。C++本科毕业设计C++程序设计类课程教学辅助系统的设计与...
### 历年全国大学生电子设计竞赛控制类题目解析 #### 水温控制系统(1997年) **设计任务概述:** 本题目要求设计并制作一个水温自动控制系统,该系统需能够控制1升净水的温度在一个指定范围内保持稳定。容器材质...
设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中"出生日期"定义为一个"日期"类内...
在本示例中,我们正在设计一个名为`CStudent`的C++类,该类用于表示一名学生。这个类包含了学生的基本信息,如注册号(sno)、姓名(sname)以及数学、外语和计算机课程的成绩。以下是`CStudent`类的详细分析: 1. ...
本篇将深入探讨工厂模式在Java中的实现以及类设计图的应用。 首先,我们来看简单工厂模式。它是一种静态工厂,通常包含一个静态方法,用于根据输入参数返回所需类型的实例。简单工厂模式的优点在于易于使用,但缺点...
设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言编译器.zip设计类c语言...
设计一个学生类Student和它的一个子类Undergraduate,要求如下: 1) Student类有name(姓名)、和age(年龄)属性,一个包含两个参数的构造方法,用于给name和age属性赋值,一个show()方法打印Student的属性信息 2) ...
大学计算机类程序设计作业.zip大学计算机类程序设计作业.zip 大学计算机类程序设计作业.zip大学计算机类程序设计作业.zip 大学计算机类程序设计作业.zip大学计算机类程序设计作业.zip 大学计算机类程序设计作业.zip...
第一章 需求分析 51.1 产品开发背景 51.2 产品的特色分析 61.3 产品竞品分析 7第二章 概要设计 8系统功能设计 8系统架构设计 8物理架构设计
请按照以下要求设计一个学生类Student,并进行测试。 要求如下: 1)Student类中包含姓名、成绩两个属性 2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值. 3)Student类中定义一个无参...
材料类毕业设计.docx
芯片制造技术-芯片设计类技术资料合集: 18微米芯片后端设计的相关技术.pdf 5--芯片规划与设计(3学时).ppt ASIC芯片设计生产流程.ppt ECO技术在SoC芯片设计中的应用-王巍.pdf ic设计流程工具.docx LDO芯片设计报告及...
科技类-网页设计模板科技类-网页设计模板科技类-网页设计模板科技类-网页设计模板科技类-网页设计模板科技类-网页设计模板