クラス Engine を介して Format1 というクラスのインスタンスを 1 つだけ返す必要があります。
public final class Engine {
private static Format format;
public Engine(final Param1 param1, final Param2 param2) {
Engine.format = new FormatV1(param1); // FormatV1 implements Format
}
static Format getFormat(int condition) {
switch(condition) {
case 1 : return format;
}
}
}
これにより、getFormat を介して Format の正しいインスタンスが 1 つだけ返されることが保証されますか?
また、getFormat() を呼び出すクライアントは、フォーマット オブジェクト (まったく状態を持たない) でメソッドを実行する必要がありますが、メソッドに ByteBuffer を渡します (この ByteBuffer は変更される可能性があります)。
class Client
{
public static void main(String[] args) {
Format obj = Engine.getFormat(1); // some param
ByteBuffer buffer; // read data from disk
synchronized (obj) {
long[] result = obj.method(buffer);
if (result == null) {
// do something
}
}
}
}
同期された構造 here/like this はシリアライズ可能性を保証しますか?
PS:私はJavaに非常に慣れていません。私が読んだ限り、メソッドを同期させることもできましたが、チェック(結果== null)もクリティカルセクションに含める必要があると思うので、同期(objを使用することにしました) 代わりに構築します。これがばかげた質問である場合はご容赦ください。しかし、私の疑問を確認したいと思います。