私は最近仕事を変更しました。大規模なオンライン小売店向けのWebSphere Commerceプロジェクトで作業しています。コード内には、さまざまなサービスのインスタンスを取得するためのさまざまな工場があります。しかし、彼らがやっていることはすべて毎回新しいオブジェクトを返すことです。例えばシングルトンを使用した場合や新しいオブジェクトインスタンスを使用した場合は何か違いはありますか?
public class DataAccessServiceFactory {
public static DataAccessService getDataAccessService(){
return new DataAccessService();
}
これはアンチパターンのように感じられ、リソースを不必要に使い果たしてしまう可能性があります。代わりに、シングルトンインスタンスを返す必要があります。これらのサービスには、1つまたは2つのプライベートフィールドしか存在しない場合がありますが、何百万人ものユーザーがいるため、何百万もの不要なオブジェクトが存在します。
工場を呼び出さずに新しいオブジェクトを作成することができるので、ファクトリー自体は多少意味がありませんが、これは実世界での使用に実際には何の違いもあります。あなたはそれを使用する必要があるたびに新しいサービスですか?
[編集] もう少し詳しく: これらのサービスを使用してルックアップ製品やカートに追加するなど、データベース内のエントリをクエリまたは作成するために使用されるさまざまなRESTサービスがあります。サービス自体はステートレスです。
方法多くのスレッドがこのgetDataAccessServiceメソッドにアクセスしますか? DataAccessServiceにスレッド間で共有する必要がある状態がありますか?無関係ここにはどのようなユースケースがありますか? – SMA