2009-02-20 9 views
7

私は時には、特定の設計状況の中で一見簡単ではあるが間違った方法を取る唯一のものですか?疑わしいシングルトンオブジェクトを私が共有したことを認めます。それ以外にも、私は物事をより簡単に見せるために、1つまたは2つのオブジェクトを作成することが知られていました。あなたがそうすべきではないことを知っていても、どのようなアンチパターンを使用しますか?

あなたがそうすべきではないことを知っていても、アンチパターンを使用しますか?

+0

私はシングルトンについて不思議です。怠惰な方法は単純な古いグローバルを使うことです、なぜ複雑な反パターンを使うのはどうですか?グローバルは悪いかもしれませんが、一般的にシングルトンよりも悪くありません。コード作成も簡単です。 – jalf

+1

私は、シングルトンは本質的に悪いデザインパターンであると考えています。私の意見では、まれなハードウェアドライバケースでしか使用できません。他のほとんどのケースでは、OOP環境にグローバルな状態を導入するだけで、移植性などの設計品質目標に損害を与えます。 –

+0

最後のコメントから続きます - しかし、私はしばしば、次のロジックでシングルトンを正当化します。「本当に深いものがグローバル変数であっても、私はシングルトンにする必要があります。 –

答えて

2

God Objectアンチパターンは簡単に間違いです。時にはクラスを上手くやるためにはあまりにも多くの作業のように見えることがあります。その後、ある時点でそれを支払う。私はこの反パターンがタイトなカップリングを手にしていることを発見しました。

ベンダー固有の言語を使用している場合は、ベンダーのロックイン防止パターンを避けることも難しい場合があります。

+0

「神」と言う言葉を編集したいかもしれません。 – CTT

+0

私はゴブのオブジェクトのアイデアが好きです - すべての口とズボンは複雑ですが、実際にはあまりしません。 – Tom

+0

私は実際にあなたがスラングを使っていると思っていました。あなたがそれを変更したことを恥ずまして、あなたは新しい波hehを始めたかもしれません。 –

6

を。私は、例えば、内部データベースの有罪です。

時には、あらかじめ缶詰めされた同様のバージョン(Not Invented Here)を使用するのではなく、自分でコードを作成することも魅力的です。私はそれを自分で書くよりも多くの理にかなっているので、機能の特定の部分のために追加されますその1つのベンダー固有のものが常にある

0

Vendor Lock In

それを回避しようと、しかし...。私は後でこの決定のために自分自身を蹴る多くの時間を過ごしました。

1

コメントの中には、ワラントが答えであると思う - シングルトンパターン。

言語(Javaなど)でサポートされていない場合は、グローバル変数を達成する方法です。これは、必要なときを除いて、決して使うべきではないパターンの1つです。重要なビットは、グローバル変数(インスタンスがある)を必要とするときと、必要なときを区別することができます。

グローバル状態を導入する重大な問題を超えてシングルトンに問題があります。例えば、複数のクラスローダーを持つクラスローダー内では複数のコピーが終了する可能性があります。

関連する問題