Java singletonTest, getInstance()

wontwopunch·2022년 1월 17일
0

TIL

목록 보기
35/53
post-thumbnail

singletonTest3

package com.icia.example4;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

@AllArgsConstructor
class Saram {
  int height;
}
class SaramService {
  // 1. 자신의 정적 필드를 가진다.
  private static SaramService service = new SaramService();
// 2. 생성자는 private - 외부에서 객체 생성 금지
private SaramService() {
}
// 3. 필드를 빌려주는 메소드 추가
public static SaramService getInstance(){
  return service;
}
// 4. 적정 체중(키-100)을 계산
public void printWeight(Saram saram){
  System.out.printIn(saram.height-100);
}
}
public class singletonTest3 {
  public static void main(String[] args){
    Saram s1 = new Saram(175);
    Saram s2 = new Saram(180);
    SaramService sevice = SaramService.getInstance();
    service.printWeight(s2);
  }
}

getInstance()

  • 싱글턴패턴으로 하나의 인스턴스만 가지고 공유해서 사용.
  • 생성자를 private로 선언하여 다른 클래스에서 해당 클래스의 인스턴스를 new로 생성하지 못하게 하고 getInstace()함수를 통해서만 인스턴스를 갖도록 한다.

singletonTest4

class ShopService {
  // 3.
  private static ShopService service = new ShopService();
// 1. private 생성자를 만들어라.
private ShopService(){
}
// 2. 빌려주는 메소드를 만든다. static으로
public static ShopService getInstance(){
  return service;
}
}
public class singletonTest4 {
  public static void main(String[] args){
    ShopService obj1 = ShopService.getInstance();
    ShopService obj2 = ShopService.getInstance();
    if(obj1===obj2) System.out.printIn("같은 서비스 객체");
    else System.out.printIn("다른 서비스 객체");
  }
}
profile
프론트엔드 개발자 취준생

0개의 댓글