- 자동차 운전
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 |