728x90
반응형
싱글턴 패턴
// 싱글턴 패턴
// - 특정 클래스의 객체를 단 한개만 생성하여 사용하도록 강제하는 패턴
// - private 접근지정자를 갖는 생성자, 그리고 static 메소드를 결합한 패턴
class StaticD {
private StaticD() {
System.out.println("StaticD 객체 생성");
}
private static StaticD instance = null;
public static StaticD getInstance() {
if( instance == null )
instance = new StaticD();
return instance;
}
}
public class Class_18_Static {
public static void main(String[] args) {
// private 접근지정자로 제한된 생성자는 외부에서
// 객체의 생성을 금지합니다.
// StaticD s = new StaticD();
// static 메소드를 통해 객체를 전달받는 코드
// - 싱글턴 패턴을 구현한 static 메소드이므로
// 프로그램의 구동동안 StaticD 클래스의 객체는
// 단 한개만 생성되어 공유되는 모습을 보입니다.
StaticD s1 = StaticD.getInstance();
StaticD s2 = StaticD.getInstance();
StaticD s3 = StaticD.getInstance();
StaticD s4 = StaticD.getInstance();
StaticD s5 = StaticD.getInstance();
}
}
싱글턴 패턴 예제
// 자동차(Car)를 생산할 수 있는 공장(CarFactory) 클래스를 싱글턴 패터으로 구현한 후,
// 자동차(Car)를 생산하는 예제를 작성하세요
// (생산되는 자동차(Car)는 자동차 생산 번호가 10001부터 1씩 증가가 되도록 구현)
class Car {
private int productNumber;
public Car(int productNumber) {
this.productNumber = productNumber;
}
public void printNumber() {
System.out.println(this.productNumber);
}
}
class CarFactory {
private static int productNumber = 10001;
private CarFactory() {}
private static CarFactory instance = null;
public static CarFactory getInstance() {
if( instance == null )
instance = new CarFactory();
return instance;
}
public Car createCar() {
return new Car(productNumber++);
}
}
public class Class_19_Static_EX {
public static void main(String[] args) {
CarFactory factory = CarFactory.getInstance();
Car c1 = factory.createCar();
Car c2 = factory.createCar();
c1.printNumber();
c2.printNumber();
}
}
728x90
반응형
'개발 > JAVA' 카테고리의 다른 글
자바 객체지향(7) - 상속의 형변환, (0) | 2020.06.14 |
---|---|
자바 객체지향(6) - 상속(확장), 클래스의 객체 생성 과정 AND상속관계를 구현하고 있는 클래스의 객체 생성 과정 (0) | 2020.06.14 |
자바 객체지향 (4) - static, static 멤버 변수의 활용, static 키워드가 정의된 메소드 (0) | 2020.06.14 |
자바 객체지향 (3) - this, (0) | 2020.06.14 |
자바 객체지향(2) - 생성자, 생성자 오버로딩 & 메소드 오버로딩 (0) | 2020.06.14 |