본문으로 바로가기

[JAVA] static과 싱글톤 패턴 예제

category JAVA/기본 문법 2021. 3. 1. 16:35

설명에 따른 객체를 구현하여 테스트 코드가 실행되도록 구현하기

휴대폰 공장이 있습니다. 휴대폰 공장은 유일한 객체이고, 이 공장에서 생산되는 자동차는 제작될 때마다 고유의 번호가 부여됩니다. 
휴대폰 번호가 10001부터 시작되어 휴대폰이 생산될 때마다 10002, 10003 이렇게 번호가 붙도록 휴대폰 공장 클래스, 휴대폰 클래스를 구현하세요
다음 CellPhoneFactoryTest.java 테스트 코드가 수행 되도록 합니다.

CellPhoneFactoryTest.java

public class CellPhoneFactoryTest {

    public static void main(String[] args) {
        CellPhoneFactory factory = CellPhoneFactory.getInstance();
        CellPhone myGalaxy = factory.createCellPhone();
        CellPhone yourIphone = factory.createCellPhone();

        System.out.println(myGalaxy.getCellPhoneNum());     //10001 출력
        System.out.println(yourIphone.getCellPhoneNum());   //10002 출력
    }
}

CellPhoneFactory.java

public class CellPhoneFactory {

    // 클래스 내부에 유일한 private 인스턴스 생성
    private static CellPhoneFactory instance = new CellPhoneFactory();
	
    // 생성자를 private으로 선언하면서 외부에서 new 키워드를 사용한 객체 생성을 못하게 막는다.
    private CellPhoneFactory() {
    }

    // 외부에서 유일한 인스턴스를 참조할 수 있는 public 메서드 제공
    public static CellPhoneFactory getInstance() {
        if(instance == null) {
            instance = new CellPhoneFactory();
        }
        return instance;
    }

    public CellPhone createCellPhone() {
        CellPhone cellPhone = new CellPhone();
        return cellPhone;
    }
}

CellPhone.java

public class CellPhone {

    private static int serialNum = 1000;
    int cellPhoneNum;

    public CellPhone()
    {
        serialNum++;
        cellPhoneNum = serialNum;
    }

    public int getCellPhoneNum() {
        return cellPhoneNum;
    }

}

출처 : 패스트 캠퍼스