Java 外观模式:使用数据类封装和管理数据
在上述的外观模式示例中,可以加入一个数据类来作为数据的持有者,即将需要操作的数据封装在一个类中,并将该数据类作为参数传递给各个子系统类。以下是加入数据类的示例代码:
// 数据类
class Data {
private String rawData;
public Data(String rawData) {
this.rawData = rawData;
}
public String getRawData() {
return rawData;
}
}
// 子系统类:数据读取
class DataReader {
public void readData(Data data) {
System.out.println('正在读取数据:' + data.getRawData());
}
}
// 子系统类:数据解密
class DataDecryptor {
public void decryptData(Data data) {
System.out.println('正在解密数据:' + data.getRawData());
}
}
// 子系统类:数据图形化
class DataVisualizer {
public void visualizeData(Data data) {
System.out.println('正在将数据图形化:' + data.getRawData());
}
}
// 外观类:报表生成器
class ReportGenerator {
private DataReader dataReader;
private DataDecryptor dataDecryptor;
private DataVisualizer dataVisualizer;
public ReportGenerator() {
dataReader = new DataReader();
dataDecryptor = new DataDecryptor();
dataVisualizer = new DataVisualizer();
}
public void generateReport(Data data) {
dataReader.readData(data);
dataDecryptor.decryptData(data);
dataVisualizer.visualizeData(data);
System.out.println('生成报表完成!');
}
}
// 客户端类
public class Client {
public static void main(String[] args) {
Data data = new Data('加密数据');
ReportGenerator reportGenerator = new ReportGenerator();
reportGenerator.generateReport(data);
}
}
在上述代码中,我们新增了一个Data类作为数据的持有者,并将其作为参数传递给各个子系统类的方法。每个子系统类都可以通过Data对象获取所需的原始数据。
在客户端类Client中,我们创建了一个Data对象data,并赋予其原始数据'加密数据'。然后,我们创建了ReportGenerator的实例reportGenerator,并调用其generateReport()方法,并将data作为参数传递给该方法。这样,数据将会依次经过数据读取、数据解密和数据图形化的操作。
通过引入数据类,外观模式可以更好地封装和管理需要操作的数据对象,使得整个报表生成过程更加灵活和可扩展。
原文地址: http://www.cveoy.top/t/topic/bS3u 著作权归作者所有。请勿转载和采集!