Sobes.tech
Junior — Middle

როგორ განვახორციელოთ Singleton ნიმუში თანამედროვე დამოკიდებულების კონტეინერში?

sobes.tech AI

პასუხი AI-სგან

მოდერნულ დამოკიდებულების კონტეინერებში (მაგ., Spring, CDI) სინგლტონი ნიმუში რეალიზებულია კონტეინერის კონფიგურაციის მეშვეობით, რომელიც მართავს ობიექტის სიცოცხლის ციკლს და უზრუნველყოფს, რომ მხოლოდ ერთი ეგზემპლარი იქმნება.

მაგალითად, Spring-ში, ბინები დეფოლტად სინგლტონებია. საკმარისია ბინი გამოაცხადოთ:

@Component
public class MySingletonService {
    // ლოგიკა
}

კონტეინერი შექმნის MySingletonService-ის ერთ ეგზემპლარს და გამოიყენებს მას ყველგან, სადაც ეს საჭიროა.

თუ ბინი ხელით იქმნება, შესაძლებელია სინგლტონის ზონა განისაზღვროს:

@Bean
@Scope("singleton")
public MySingletonService mySingletonService() {
    return new MySingletonService();
}

ამ გზით, სინგლტონის რეგისტრაცია შეზღუდულია კომპონენტის გამოქვეყნებით სინგლტონის ზონაში, და კონტეინერი თავად გარანტიას იძლევა ეგზემპლარის უნიკალურობისა და მისი სიცოცხლის ციკლის მართვის შესახებ.