Java 如何面向对象设计一个易于更改的类组件

Java 如何面向对象设计一个易于更改的类组件,java,android,oop,Java,Android,Oop,我想设计一个android应用程序,发送特殊的短信。所以我想用一些标题字段来打包我的特殊短信,比如短信类型、短信长度和一些其他信息。那么我如何才能有一个灵活的设计或数据结构,可以很容易地改变他们以后的字段或顺序。 示例:我希望SMS具有类似SMS类型(1字节)、SMS版本(2字节)、SMS名称长度(1字节)、SMS名称(n字节,n=SMS名称长度)的字段。。。我需要实现两个功能,一个是创建短信,另一个是解析短信字段。下面是我的示例实现 类消息{ 私有字节[]mType; 私有字节[]mVersi

我想设计一个android应用程序,发送特殊的短信。所以我想用一些标题字段来打包我的特殊短信,比如短信类型、短信长度和一些其他信息。那么我如何才能有一个灵活的设计或数据结构,可以很容易地改变他们以后的字段或顺序。 示例:我希望SMS具有类似SMS类型(1字节)、SMS版本(2字节)、SMS名称长度(1字节)、SMS名称(n字节,n=SMS名称长度)的字段。。。我需要实现两个功能,一个是创建短信,另一个是解析短信字段。下面是我的示例实现

类消息{
私有字节[]mType;
私有字节[]mVersion;
私有字节[]mNameLength;
私有字节[]mName;
专用字节[]mRawMessage;
public void create()引发异常{
ByteArrayOutputStream bo=新建ByteArrayOutputStream();
bo.write(mType,0,SMS_TYPE_LEN);
bo.write(mVersion,0,VERSION_LEN);
bo.write((字节)mName.length);
bo.write(mName,0,mName.length);
mRawMessage=bo.toByteArray();
}
公共消息解析源(字符串消息){
mRawMessage=Base64.decode(msg,Base64.DEFAULT);
ByteArrayInputStream bi=新的ByteArrayInputStream(mRawMessage);
读取(mType,0,SMS\u TYPE\u LEN);
读取(mVersion,0,VERSION_LEN);
字节[]名称长度=新字节[名称长度长度];
读取(名称,0,名称长度);
mName=新字节[Bytes.parseInt(nameLen)];
读取(mName,0,mName.length);
归还这个;
}
}

我在另一个类中编写了一些常量和函数,但主要问题是:如果我更改了该类的更新版本,可能会有一些字段可以添加、删除,因此我需要重新实现两个函数,我如何只需要修改一个(我想它是面向对象的SRP)

欢迎使用堆栈溢出。请阅读帮助页面,参加SO之旅,阅读如何提出好问题,以及此问题清单。最后,请学习如何创建一个可复制的最小示例来向我们展示,重点是最小部分。感谢您的建议@Mohammadmasumi,我编辑了问题,如果有不清楚的地方,请通知我。非常感谢。