最近做一个应用,socket的客户端,使用一种自定义的数据组装格式。
首先考虑是把发送的东西写成对象,比起直接拼字符串应该是好很多。
这样的话就要考虑,如何把对象,按照指定的格式拼装成一串字符,以及如何把接收到的字符串拼装成一个对象。
最开始的时候设想,每个传送的对象,重写toString()方法,来把自身格式化。
接着,觉得这么多对象,每个对象一个类似的方法,代码冗余太多。
于是想写一个基础对象,在里面写toString()方法,然后让其他的传送对象继承这个基础对象。
考虑到子类继承父类的方法,再访问子类的自身属性等等这么多东西,写的时候干脆另外写了一个encoder类,用于传送对象的编码。
写了一个静态编码方法,接受一个Object参数,再用反射来获得自身的类,字段,以及字段类型,再把字段根据类型组装好,返回一个完成编码的String。
写好了一跑,发现不行~~!
原因是,Class的getFields()方法只能获得public的字段,而传送的对象是标准bean写法,一个私有的成员属性加两个public的get和set,这样,反射就读不到字段了。
第二个原因,getFields()获得所有的公开字段,但是不保证顺序!而格式协议上是规定好的顺序,乱不得。
想了想,修改这个静态编码方法的参数为Object...args,变长Object列表,这样来保证顺序,使用的时候,需要把对象的属性给依次传递过来,Encoder.parseRequest(request.getNumber(),request.getUser(),request.getPass());
这样,编码程序终于能正常工作了~~然后考虑解码问题
分享到:
相关推荐
私有化方法:在准备私有化的数据成员或方法的名字前面加两个下划线“__”即可。;对于这一层面的封装(隐藏),我们需要在类中定义一个方法(也称接口函数),在它内部访问被隐藏的属性和方法,然后外部可以通过接口...
面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它强调将数据和操作数据的方法封装在一起,以实现代码的模块化和重用性。封装是OOP的三大特性(封装、继承、多态)之一,它是通过限制...
总的来说,访问和修改iOS对象的私有属性通常不推荐,因为这违反了封装原则,可能导致不可预测的行为。然而,在特定场景下,如调试、插件化或测试时,KVC和Runtime提供了解决问题的有效途径。开发者应当谨慎使用,并...
在JavaScript编程中,私有属性和私有函数是实现封装和数据隐藏的关键概念。这些特性使得我们可以更好地控制代码的访问权限,防止外部直接修改或访问内部状态,从而增强程序的安全性和稳定性。在JavaScript中,虽然...
Java封装是面向对象编程的核心概念之一,它是将数据和对数据的操作绑定在一起,形成一个独立的单元,对外只提供统一的访问接口。这样的设计能够提高代码的安全性,降低耦合度,使得程序更加模块化,易于维护和扩展。...
在面向对象编程中,封装是指隐藏实现细节,将属性私有化,并提供公有方法访问私有属性。封装的主要目的是保护内部数据,防止外部修改,并提供统一的访问接口。 在 Java 中,封装主要通过使用 private 关键字将属性...
面向对象编程是现代软件开发的核心思想之一,Java 语言作为一门强类型、面向对象的语言,其核心特性之一就是封装性。封装是面向对象编程的基石,它允许我们将数据和操作这些数据的方法绑定在一起,形成一个独立的...
"Class"基类通常会定义一个构造函数(__init)来初始化新创建的对象,并且可能包含一些公共方法和私有方法。类的方法通过表来存储,而实例化对象则是通过调用这个类表。下面是一个简化版的"Class"基类实现: ```lua...
我们还定义了一个构造方法,用于在对象初始化时对name和age属性进行赋值。为了实现年龄约束,我们编写了一个setter方法setAge(int age),在该方法中,我们检查输入的年龄是否小于16岁,如果小于16岁,则将年龄默认为...
在实际编程中,我们还会使用接口(interface)、抽象类(abstract class)等机制来进一步提升封装性和模块化。接口定义了一组方法,但不提供实现,强制实现类遵循特定的行为规范。抽象类则可以包含部分实现,允许...
例如,将私有变量(private)用于存储数据,而提供公共方法(public)进行数据的读取和修改,这就是一个基本的封装实践。 接下来,我们谈谈函数。函数是一段完成特定任务的代码,它可以接收参数,执行一系列操作,...
在JavaScript编程中,封装是一种重要的面向对象编程原则,它有助于保持代码的整洁、模块化,同时提高可维护性和重用性。本篇文章将详细讲解如何使用JavaScript原生方式实现简单的封装,包括四个主要步骤。 首先,...
(1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性-为了防止在类外引入这个存放对象的属性 (3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)...
(1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性-为了防止在类外引入这个存放对象的属性 (3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)公有的静态方法-为了让用户进行...
封装的目的是为了保护数据的安全性,避免外部代码直接访问和修改对象的内部状态,同时也使得代码更加模块化,易于维护。下面将详细探讨在"JAVA封装类练习题"中的相关知识点。 首先,我们要理解什么是封装。封装就是...
1. 将属性私有化:将类的属性设置为私有,以防止外部代码直接访问对象的私有属性。 2. 提供公共方法:提供公共方法来访问私有属性,以便外部代码可以通过这些方法来访问对象的私有属性。 3. 使用接口:使用接口来...
私有属性和方法是封装的一种实现方式,私有意味着这些属性或方法只能在定义它们的函数或对象内部被访问。在JavaScript中,私有属性和方法通常是通过函数作用域来实现的,即在函数内部定义的变量和方法,外部是无法...
3. **使用构造函数初始化私有属性**:在创建对象时,通过构造函数来初始化私有属性的初始值。 ### 示例:使用Setter和Getter方法 假设我们有一个`Person`类,其中包含一个名为`age`的私有属性,我们可以使用如下的...
(1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性-为了防止在类外引入这个存放对象的属性 (3)私有的克隆方法-为了防止在类外通过clone成生另一个对象 (4)公有的静态方法-为了让用户进行...