1

私はちょうどデザイン パターンに取り掛かったところです。私が読んでいるのは、パターンは通常、言語から独立しているということです。

プログラミングでは、OOP と非 OOP があります (非 OOP の名前はありますか?)。

私は最近、テンプレート パターンをいじっていますが、OOP の直感に反するようです。それが効果的に「Go To Methods」の束であるという事実(ある程度Pascalを思い起こさせる)は、OOPがどのように動作したいのか「反対」しているようです。

これは、一部のパターンが言語により適していることを意味しますか (完全に適していないものがあっても、それが適していないというわけではありません)。

4

2 に答える 2

2

テンプレートパターンは、抽象型で関連オブジェクトのグループを参照でき、それぞれが同じ「コントラクト」メソッドを実装しているため、同様の方法で操作できるため、適切に実行された場合のOOPの非常に良い例です。そのパターンはアルゴリズム/プログラム構造を定義すると言われていますが、ほとんどの基本的なケースでは、それは実際には単なるポリモーフィズムです。

一部のパターンは他の言語により適していると主張することもできますが、どの言語でもほとんどすべてのパターンを使用できます。

于 2012-10-02T12:46:59.773 に答える
1

パターンは言語に依存しませんが、多くの場合、言語ファミリに固有です。OO 言語に共通するパターンもあれば、関数型言語に共通するパターンもあります。

例としてビジター パターンを見てみましょう。これは、複数のディスパッチをサポートしていない OO 言語のサブセット (C++、Java、C# - dynamics の略) で人気があります。ただし、複数のディスパッチが言語機能である言語 (Common Lisp、Clojure) ではまったく必要ありません。

OOP と非 OOP に関しては、複数の非 OOP パラダイムがあります: 関数型言語、手続き型言語などです。多くは、C++ などの実際のマルチパラダイム言語であり、OO、手続き型言語、関数型言語の機能を提供します。一方、型は C++ の第一級オブジェクトではなく、おそらく正しいので、多くの人はそれを本当の OO 言語とは考えていません。

于 2012-10-02T14:10:27.570 に答える