CarClass이라는 객체가 있다.
public class CarClass
어떻게 해야 Car 객체의 인스턴스가 하나만 존재하도록 할 수 있을까?
private CarClass() {
}
// 생성자가 private면 아무도 이 객체를 생성할 수 없는데..
그렇다면 자신을 멤버로 선언해서 메모리에 올려놓자 (static)
private static CarClass car new CarClass();
// 이렇게 해도 멤버로 선언된 CarClass 역시 private이다.
외부에서 멤버로 선언된 car을 가져올 수 있는 메서드를 생성하면 된다!
public static CarClass getInstance()
{
return car;
}
// 이렇게 하면 getInstance 메서드 외에는 CarClass 객체를 생성 및 사용 할 수 없게 되었다.
구현 코드
public class CarClass {
private static CarClass car = new CarClass();
// 생성자
private CarClass() {
}
// private인 car 인스턴스를 가져올 수 있는 메서드
public static CarClass getInstance()
{
return car;
}
private static boolean isUse = false;
// 차 사용 시작
public static void drive()
{
isUse = true;
System.out.println("운전 시작");
}
// 차 사용 종료
public static void parking()
{
isUse = false;
System.out.println("주차 됨");
}
public static boolean isEnableUseCar()
{
return !isUse;
}
}
private static CarClass car = new CarClass();
위 코드를 통해 최초 한 번만 객체를 생성하고 이후에 해당 객체를 getInstance 메서드를 활용 해 return 받아 사용하는데 해당 차 객체를 누군가 이용하고 있으면 이용할 수 없도록 구현했다.
// 차 사용
CarClass car = carClass.getInstance();
if(car.isEnableUseCar())
{
car.drive();
}
// 차 사용 요청
if(car.isEnableUseCar())
{
car.drive();
}
else
{
System.out.println("++++ Wait ++++")
}
'Java' 카테고리의 다른 글
제네릭 (0) | 2022.06.13 |
---|---|
컬렉션 프레임워크 (0) | 2022.06.10 |
[예제] 객체 지향 (0) | 2022.05.25 |
멤버 변수 (0) | 2022.05.24 |
자바 은닉화: 캡슐화 encapsulation (0) | 2022.05.24 |