
宽接口和窄接口,这是设计当中经常会遇到的一个选择。宽接口通常能够让一个类功能强大,但有时容易失去真正的关注点从而破坏了“单一职责原则”。窄接口则比较容易确保对某一特定点的关注。设计中经常可以配合着使用它们,这点很像铺设自来水管道。管路最初阶段可能从需求和效率考虑需要大口径的,但要入户的时候就要转成小口径。做设计也是这样,在图中较底层的Socket类提供的就是一个宽接口,而TcpListener、TcpClient、NetStream则是针对服务器、客户端和流对Socket进行了一次适配后成为了窄接口。用户可以根据需要自主选择宽接口和窄接口。没有特殊要求的时候,较之Socket,使用TcpListener和TcpClient就更方便,更不容易用错。