Zen のインタフェースとポリモーフィズムの特徴について説明します。
ポリモーフィズムの実現方法としては、インタフェース継承による実現方法が広く知られています。Java の interface や C++ の抽象クラスです。このインタフェース継承は、オブジェクト指向的な階層によるインタフェースを提供します。
Zen ではオブジェクト指向的なアプローチとは異なるアプローチを採用しています。
以降では、オブジェクト指向的なインタフェースの例として C++ の抽象クラスと比較しながら、Zen のアプローチを説明します。
C++ の抽象クラスのようなオブジェクト指向的なインタフェースには次のような特徴があります。
オブジェクト指向的なインタフェースでは、実行時の柔軟性を得るために次のような欠点を持つことになります。
Zen のインタフェースには次のような特徴があります。
オブジェクト指向的なインタフェースと比較した場合、Zen のインタフェースはコンパイル時に解決されるため、実行時の柔軟性に欠ける部分があります。
この問題は、*vtable
との使い分けにより克服しています。
また、構造体定義にインタフェースを明示しないことから、どのインタフェースを実装しているか、構造体定義だけから読み解くことができません。
そのため、インタフェース定義を変更する場合、その影響範囲がわかりにくくなります。
幸いなことに、組込み関数 @is()
を使ったテストを簡単に書くことができます。
テストを活用し、実装しているインタフェースを明示すると良いでしょう。
このように、Zen のインタフェースによるポリモーフィズムでは、実行時のコストを最小にしながら、新しいインタフェースへの対応を容易とするアプローチを採用しています。
☰ 人の生きた証は永遠に残るよう ☰
Copyright © 2018-2020 connectFree Corporation. All rights reserved. | 特定商取引法に基づく表示
Zen, the Zen three-circles logo and The Zen Programming Language are trademarks of connectFree corporation in Japan and other countries.