期待的接口
《编程絮语》之三 定义接口时需要注意什么?是实现,还是消费?窃以为,接口是抽象了的服务,服务的消费者只会关心服务能够提供什么,而不会考虑服务如何实现。例如在ATM机上取款,取款人只需要考虑怎样插入储蓄卡,怎么选择功能项,然后输入正确的密码和取款金额,再等待正确数额的钞票从机器中吐出,最后取走。至于内部的实现机制,则不在取款人的思考范畴。因此,接口必须符合调用者的期待,不然就会给设计带来障碍。接口的定义是为调用者准备的,接口具备的方法以及方法具备的签名,都必须站在调用者的角度来考虑。当调用者是测试用例时,这样的设计就变成了测试驱动设计。 例如编写一个银行账务管理系统,存取款服务的接口定义应该是这样: public interface IBankService { bool Withdraw( Money money); bool Deposit( Money money); } 在IBankService的实现类中,会通过调用一个Account类,实现存款和取款的功能: public class Account { public bool Add( Money money) { //实现 } public bool Substract( Money money) { //实现 } } public class BankServiceImpl : IBankService {