現在のプロジェクトでは、インスタンスを変数に格納するクラスがあります。このインスタンスは、プロジェクト内の他のすべてのクラスからアクセスできる必要がありますが、変更できるのは独自のクラスのみです。
どうすればこれを達成できますか?
現在のプロジェクトでは、インスタンスを変数に格納するクラスがあります。このインスタンスは、プロジェクト内の他のすべてのクラスからアクセスできる必要がありますが、変更できるのは独自のクラスのみです。
どうすればこれを達成できますか?
public
ゲッターを作成しますが、セッターは作成しません。 public
そしてフィールド自体private
要するに、それが構築された後immutable object
、状態を変更することはできません。Object
String
不変の一般的な例ですClass
。
class
immutable
次のようにしてください-
overridden
-を作成するか、ファクトリをclass
final
使用
してコンストラクタをプライベートに保ちます。static
private
を作成し、final
no-argument constructor
呼び出し元に、メソッドへの後続の呼び出しと組み合わせて使用するのではなく、単一のステップでオブジェクトを完全に構築するように強制しsetXXX
ます。setXXX
。誰かが「パブリックゲッターですが、プライベートフィールドのパブリックセッターはありません」と提案しています。
注意:これは、フィールドがプリミティブ型の場合にのみ機能します。
セッターを含むオブジェクトの場合でも、コンテンツを変更できます。したがって、読み取り専用ではありません。
ディープコピー/クローンを実行せずに戻り型を読み取り専用にするためのいくつかの構造がJava言語に提供されているのを見るのは興味深いでしょう。
私はReadOnlygetEmployee(){...}のように画像化しています
シングルトンをインスタンス化するための定型コードは、多くの場所で見つけることができます。たとえば、http://www.javacoffeebreak.com/articles/designpatterns/index.htmlを参照してください。
アプリケーションにシングルトンへの参照が散らばっていると、それを取り除くのはかなり難しいため、多くの人がシングルトンをアンチパターンと見なしていることに注意してください。