「抽象化」と「ファサード」の違いは何ですか?
違いはありますか?または、用語は交換可能ですか?
ファサードは特定のデザインパターンであり、パッケージ/モジュール内の内部要素を、明確に定義されたインターフェイスの背後にあるクライアントから隠すことを目的としています。通常、複数のインターフェイス/クラスを1つの共通のインターフェイス/クラスの背後に隠しているため、その名前が付けられています。
「抽象化」は一般的な用語であり、何かの具体的な詳細を外の世界から隠すことを意味します。
したがって、これら2つは互換性のある用語ではありません。
ファサードはGoFデザインパターンであり、非常に特殊です。本質的には、アプリケーションの本体から複雑すぎる機能を隠すことです。
抽象化は、サービスの機能をクライアントから隠すことに関連する、より曖昧な用語です。
私にとって抽象的とは、物のコレクションの共通部分を取り、それらから基本物を作成することを意味します。これは、親クラスのように、コレクションが利用できるものです。
ファサードは(文字通り)顔であるため、基本クラスのアナロジーは完全には当てはまりません。ファサードはよりインターフェースであるため、ファサードを使用するものに関連している必要はありません。マスクのようなものだと思います。たとえば、私のクラスには「使い捨て」マスクがあります。
したがって、私の考えでは、違いは、抽象的なパターンでは階層を構築できるのに対し、ファサードパターンではクラスが類似しているように見えることです。