上QQ阅读APP看书,第一时间看更新
1.3.3 面向接口编程
在Go语言中,接口扮演着重要的角色。接口提供了一种抽象机制,使得程序员可以编写更灵活、可扩展的代码。通过接口,不同的类型可以在共享相同行为(方法)的情况下实现松耦合的交互,从而提高代码的可维护性和可重用性。
Go语言中没有类的概念,因此它将面向对象的三个基本特征(封装、继承和多态)以自己的方式实现。Go语言通过接口实现了鸭子类型(Duck Typing),这是一种动态类型的编程范式。鸭子类型基于一个简单的原则实现:如果一个对象走起来像鸭子,叫起来像鸭子,那么它就可以被认为是鸭子。换句话说,鸭子类型关注的是对象的行为,而不是对象的实际类型。在Go语言中,接口是一个或多个方法签名的集合,任何实现了这些方法的类型都可以被认为实现了该接口。这是一种隐式的实现,没有显式地使用implement之类的关键字。需要注意的是,尽管Go语言是静态类型的,但因为接口实现了鸭子类型,所以它的类型处理更为灵活。Go语言官方建议使用组合方式实现继承这个特征。一般情况下,组合是“has-a”关系,继承是“is-a”关系,相比之下,组合的耦合更松。
在笔者看来,Go语言就是一门基于连接与组合实现的编程语言。在Go语言中,连接指的是对各个函数或方法进行串联的方式,组合指的是将简单对象组合成复杂对象的方式。编程的目标就是化繁为简,充分运用组合的思想大幅简化了开发模式和项目代码,实现返璞归真。