※ 引述《Tripadvisor (探险家)》之铭言:
: 假设我有好几个子类别实作了抽象类别中的某个函数,在子
: 类别中各个类别都有自己的实作方式,如此就我看来抽象
: 类别只是提供了一个共同的 "方法名称" 的优点,然而抽象名称
: 就只有这点儿好处吗 ? 让我觉得可有可无都没差,反正各个
: 子类别都有自己的作法,就算我不继承这个抽象类别,我在每个
: 子类别自己设定相同的函数名称不就好了 ?
这取决你使用的程式语言特性。
像 Python、Ruby 之类的语言,根本没有 interface 或是 abstract method,
而是实际执行时才判断该物件有没有实作被呼叫的 method。所以你甚至不需要
继承特定类别。
但是像 C++、Java 等语言,则是在编译时期依靠 object type 来判断
是否有实作被呼叫的 method。当你有很多个类似的 class 要提供相同作用的
method ,定义 abstract base-class 或宣告 interface 是最简单的作法。
不然就得针对每个具体的类别写一段叫用的程式,或者是用 reflection 等
麻烦的方法。
《Design Pattens》成书的年代动态语言还不流行,自然有些东西在现在看来
会不太适用。