我们有一个平台组件(用Java编写),现在应该向后兼容一段时间,例如3年.是否有可能实现新功能或修复错误必须要求平台中的接口更改?
一个具体的例子是,假设在平台中定义了某种监听器接口,客户端代码将实现监听器.稍后在监听器中需要一个新方法来引入一个新功能,但我们不能这样做,因为它会破坏接口,以便某些客户端无法编译.
创建一个使用新方法扩展原始界面的新界面是一个好主意吗?需要此新功能的客户端现在将实现新接口,并且不需要更改其他客户端代码.当然,平台中的调用现在应检查侦听器的类型,如果它是新方法的新接口,则将调用新方法,或者不执行任何操作.
这种改变可能会使代码看起来不那么简单,但我想它仍然有效.是否有必要在平台上更改接口?
序列化django模型对象时,格式如下:
{
"pk":1,
"model":"book",
"fields":{
"name":"BookName",
"price":"48",
Run Code Online (Sandbox Code Playgroud)
如果它是这样的话会更直接吗?
{
"id":1,
"name":"BookName",
"price":"48",
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有一种简单的方法可以做到这一点?Json数据将被发送到iPhone等移动设备,客户端对模型名称不感兴趣,或者表中有哪些字段.
类似的帖子Django:自定义序列化选项?建议使用模板,但这是否意味着我需要为所有模型创建模板?
还有一个问题是完全序列化,这与Django的内置序列化器相反,后者仅返回相关字段的主键值.我知道DjangoFullSerializers可以做到这一点,但是可以做到这两点(自定义格式和完整序列化)吗?