在面向对象程序设计中，两个无关的对象通过协议或者接口来进行相互通信。他们是一组方法和值的集合，这组集合便是不同的对象相互达成一致并用来协作的协议或接口。举个例子，在Java语言中，有一个用来比较的接口 (Comparable) 具体规定了一个方法叫做compareTo()，需要实体类去实现。那么，这就意味着假使有一个独立的用于完成排序功能的方法想对一组实现了该接口的对象进行排序， 方法本身就无须知晓这个对象的内在属性，直接调用compareTo()方法便可对这些对象进行既定的排序工作。协议是用来描述