본문 바로가기

디자인패턴

Singleton Pattern_ver.02

  • 자동차 운전
public class CarSingle {
    private boolean Inuse;
    private static CarSingle uniqueInstance;

    private CarSingle() {
        Inuse = false;
    }

    public static CarSingle getInstance() {
        if (uniqueInstance == null) {
            uniqueInstance = new CarSingle();
        }
        return uniqueInstance;
    }

	//사용중이 아니면 운전 시작, Inuse를 true로 변경
    public void drive(){
            Inuse = true;
            System.out.println("Driving");
    }

	//차량 운행을 멈추면 Inuse를 false로 변경
    public void cancel() {
            Inuse = false;
            System.out.println("Inuse, please wait");
    }

    public boolean isEnable() {
        return !Inuse;
    }
}
public class Starter {
    public static void main(String[] args){
        CarSingle car = CarSingle.getInstance();
        if (car.isEnable()) {
            car.drive();
        } else {
            System.out.println("Car is Inuse");
        }

        CarSingle car2 = CarSingle.getInstance();
        if(!car2.isEnable()){
            car2.cancel();
        } else {
            System.out.println("Inuse");
        }
    }
}

 

 

 

  • 주차(enum 사용)
public enum ParkingClass {
    UNIQUE_INSTANCE;
    private boolean Inuse;

    private ParkingClass() {
        Inuse = false;
    }

    public void parking(){
        Inuse = true;
        System.out.println("parking");
    }

    public void out(){
        Inuse = false;
        System.out.println("Out");
    }

    public boolean isEnable() {
        return !Inuse;
    }
}
public class Checker {
    public static void main(String[] args) {
        ParkingClass park = ParkingClass.UNIQUE_INSTANCE;
        if (park.isEnable()) {
            park.parking();
        } else {
            System.out.println("No space");
        }

        if (!park.isEnable()){
            park.out();
        } else {
            System.out.println("Can use");
        }
    }
}

 

 

 

GitHub - Pearlmoon997/Design_Patterns: Design_Patterns

Design_Patterns. Contribute to Pearlmoon997/Design_Patterns development by creating an account on GitHub.

github.com

 

 

GitHub - Pearlmoon997/Design_Patterns: Design_Patterns

Design_Patterns. Contribute to Pearlmoon997/Design_Patterns development by creating an account on GitHub.

github.com

 

'디자인패턴' 카테고리의 다른 글

Decorator Pattern_카페  (0) 2022.05.23
Builder Pattern  (0) 2022.05.23
Singleton Pattern  (0) 2022.05.21
Factory Method_ver.02 (햄버거)  (0) 2022.05.19
Abstract Factory _ 피자가게  (0) 2022.05.18