- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从事的项目将处理不同的数据格式。
例如,假设我有以下数据格式:
formatA, formatB, formatC, ...
具有以下类。
格式A:
public class dataFormatA {
private String data;
public dataFormatA(String data) {
this.data = data;
// convertData(this.data);
}
public dataFormatB convertToDataFormatB() {
return new dataFormatB(data);
}
public dataFormatC convertToDataFormatC() {
return new dataFormatC(data);
}
}
格式B:
public class dataFormatB {
private String data;
public dataFormatB(String data) {
this.data = data;
// convertData(this.data);
}
public dataFormatA convertToDataFormatA() {
return new dataFormatA(data);
}
public dataFormatC convertToDataFormatC() {
return new dataFormatC(data);
}
}
格式C:
public class dataFormatC {
private String data;
public dataFormatC(String data) {
this.data = data;
// convertData(this.data);
}
public dataFormatA convertToDataFormatA() {
return new dataFormatA(data);
}
public dataFormatB convertToDataFormatB() {
return new dataFormatB(data);
}
}
最好的设计模式是什么?目前,每个类都有一个方法将其数据类型转换为其他数据格式类。但这不是一个好的设计,因为它违反了开闭原则
最佳答案
你能设计出一种(或极少数)中间格式吗?我们称这样的格式为M
;那么您只需要从每种格式到 M
的转换器,以及从 M
到每种格式的转换器。添加更多格式变得容易。
如果您在每对格式之间有一种非平凡且独特的转换方式,那么您将无法拥有一个完整的矩阵。
您仍然不需要将转换器代码保留在格式类中。
相反,我会创建一个通用的转换器接口(interface):
interface FormatConverter<SRC, DST> {
DST convertFrom(SRC);
}
现在您可以使用任何您喜欢的机制来实现这个接口(interface),可能是通过拥有一堆转换器类。
转换器可以通过包级可见性查看每个格式类的某些非公开详细信息。或者,它们可以是格式的内部类。 OTOH 这再次在格式类和转换器之间创建了紧密耦合,因此可能违反开闭原则。
关于java - 双向数据格式转换的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37496183/
我处理来自 AVFrame.data 的原始数据。此帧的像素格式为 AV_PIX_FMT_YUV420P。我想了解此数据位于哪个值范围内。 似乎 UV(在 YUV 方案中)必须在 [-128, 128
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 去年关闭。 Improve this questio
Google Web Toolkits (GWT) RPC 调用的数据格式如何以及 IsSerializable 对象如何传输。我知道 Java Serializable 传输某种二进制格式,但是 G
我打算建立一个简单的音频接口(interface)。为此,我只想知道 ASIO 驱动程序通常以哪种格式将数据传递给程序?我无法从规范中找出这一点,也无法在其他地方找到它。我不想编写自己的驱动程序,我只
我正在编写一个平滑流客户端应用程序。在服务器端(带有Media Services扩展的IIS 7)上,我有一堆ISMV和ISMA文件,这些文件是使用Expression Encoder pro 4预先
我使用 JSON.stringify 和 JQuery.ajax() 将以下 JSON 对象从 .jsp 页面传递到 java servlet: {"bin":[{"binId":"0","binDe
我有一些来自 VLM telnet 服务的数据: show media : ( 1 broadcast - 0 vod ) cam1 type : br
我们正在导出公钥和私钥。私钥将由用 Magic 编写的非 .net 软件使用。开发人员对导出 key 的格式有疑问。是否有白皮书或其他资源来解释导出数据的格式? 最佳答案 关于导出的 blob 类型的
如何在 Altair 中创建多线图? 特别是,我有一个 pandas 数据框,如下所示: Commit Author Date Week Adds
我的数据格式类似于此示例中使用的 flare.json: 我只是想知道 d3 可缩放图表使用什么函数 来获取这种格式的数据 在 flare.json 中是这样的 { name: "stuff",
我正在尝试创建一些 JSON 用于使用 Highcharts 显示图表 http://www.highcharts.com/ 我复制了他们的一个例子: http://www.highcharts.co
我被要求编写一个读取 BSDF data format defined by Zemax 的函数此类文件的示例可在以下页面找到:BSDF file example 如果可能的话,我想只使用标准的 if
我为 CoreML 将 UIImage 转换为 CVPixelBuffer,但我想更改 RGB 像素,如 R/1.5、G/2、B/2.5。 我可以使用assumingMemoryBound(to :
我正在开发一个项目,我想展示网站中的各种文件如何相互交互。我认为使用 D3 这将是一个相当简单的任务,但现在我想知道我的 json 数据是如何排列的。这是我的数据示例: { "pages" : [{
我正在使用 Apache POI 构建一些 Excel 文件,我想确保某些单元格的类型为“Number”。 我尝试了以下方法: style.setDataFormat(HSSFDataForm
我有一些具有小数属性的实体。这些实体的属性显示在我整个 UI 的多个位置。 目前我发现自己在做: litWeight.Text = person.Weight.ToString("0.00"); 无处
首先介绍三个注解: @JsonAutoDetect (method/field):作用于方法或字段,用来表明,当生成json的时候忽略有该annotation的方法或字段 @JsonIgnore 过滤
我是 Azure 的新手,一直在使用 Azure Monitor 和 AZ Sentinel 进行日志记录和分析部分。我的审核日志从 AZ VM 中托管的第三方供应商安全设备流向 Syslog VM。
我有一些代码,例如: CellStyle cs2 = wb.createCellStyle(); CellStyle cs4 = wb.createCellStyle(); cs4.setDataFo
我正在尝试提取 YourKit 的“线程” View 中显示的数据(关于线程状态;主要是当每个线程“等待”或“可运行”时)。我已使用命令行导出实用程序为其支持的所有 View 生成所有格式。 导出目录
我是一名优秀的程序员,十分优秀!