万物都有名字,通过名字来标识对方、传达信息。人有名字,物也有名字,“小王的汽车”、“小张的汽车” 就是车的名字,通过名字我们知道它们指向不同的事物,虽然车也许是一模一样的。但对于程序设计里面的数据、对象,我们从来没有想过给名字,这导致我们在对象互动中无比的麻烦。
例如 对象A构建了一个对象B,希望对象C、D、E都使用B,那么A就要把B的指针作为方法参数硬生生的传给CDE,或者CDE到A取B,这无形导致了对象交流的麻烦,为什么,因为对象没有名字,我们必须来传递对象的实体!
消息对象编程给对象一个名字,这样我们通过名字就可以方便的使用而无需多关注实体,如果CDE使用B,给B起名“ happyboy”,那么CD使用B就是
C.putMsg("happyboy",cmsg);
D..putMsg("happyboy",Dmsg),
一切交流将变得简单。
现在我发起一个HTTP请求 ,那么在任何地方我发起putMsg(“httpClient” ,msg)就行了。“httpClient”这个名字对应什么实体、如何实现的我不用操心。现在“httpClient”对应的是OKhttp类,某天我发现hahaHttp更好用,那么将“httpClient”名字指向hahaHttp就可以了,所有使用的地方不用任何改变。
名字改变一切!