描述：如果一个对象是封装良好的，协议很有可能提供了这个对象能够被访问的唯一途径。一些编程语言直接支持协议或者接口 (Objective-C, Java, C#, D, Ada, Logtalk)，而早期的语言可能也有支持接口概念的特性，比如C++中抽象基类里的纯虚函数，和 Perl里的面向对象特征。请注意，在函数型程序设计和分布式程序设计语言中，也有一个概念叫做协议，但是这里协议的意思会有些许微妙的不同 (即一种允许消息交换的规格，其重点在于交换，而不是信息)。产生这个差异的原因是函数型程序