私のコンストラクターが純粋な引数からプロパティへのセッターである場合、クラスが適切に機能するために必要な他のコードをどこに置くべきかわかりません。
たとえば、JavaScript では、オブジェクトのイベントWindowMessageController
を処理するプログラムをプログラミングしています。message
window
これを機能させるには、ハンドラーをどこかにアタッチする必要があります。
var controller = this;
this.applicableWindow.addEventListener("message", function(event) {
controller.messageAction(event.data);
}
このようなものはどこに正しく属していますか?
- コンストラクターで
- .initialize() メソッドで - 一時的な結合を導入します
- WindowMessageControllerFactory.create(applicableWindow) で-非常に中心的なコードのかなり離れた場所です。これは、そのような小さなクラスでも 2 つに分割されることを意味します。
- コンポジションルート自体で-これを常に行うと、そのサイズが倍増します
- このコードを使用して、コンストラクターというメソッドを 1 つだけ持つ他のクラス WindowMessageRouter で
編集
通常、このようなコントローラーのインスタンスはアプリ内に 1 つしかないため、このケースは特殊なようです。しかし、より一般化されたケースでは、何らかの DOM要素Button
をラップするクラスのインスタンスを作成していた場合の答えは何でしょうか? <button />
突然
button = buttonFactory.create(domButtonEl);
はるかに便利なようです。