Java Programming
package com.encore.tv.domain;
import com.encore.tv.util.TV;
public class LgTV implements TV {
public LgTV() {
}
@Override
public void turnOn() {
System.out.println("LTV turnOn");
}
}
package com.encore.tv.domain;
import com.encore.tv.util.TV;
public class SamsungTV implements TV {
public SamsungTV() {
}
@Override
public void turnOn() {
System.out.println("STV turnOn");
}
}
package com.encore.tv.factory;
import com.encore.tv.domain.LgTV;
import com.encore.tv.domain.SamsungTV;
import com.encore.tv.util.TV;
/*
Singleton Pattern : 인스턴스의 개수를 하나로 유지하는 방법
구현 방법)
1. 생성자의 접근지정자를 private으로 설정
2. getInstance() 메서드를 정의해서(static), 자기자신의 생성된 객체를 반환하는 구현
*/
public class TvBeanFactory {
private TV[] arr;
private static TvBeanFactory instance;
public TvBeanFactory() {
arr = new TV[2];
arr[0] = new SamsungTV();
arr[1] = new LgTV();
}
public static TvBeanFactory getInstance() {
if (instance == null) {
instance = new TvBeanFactory();
}
return instance;
}
public TV getBean(String brandName) {
return (brandName.equals("samsung")) ? arr[0] : arr[1];
}
}
package com.encore.tv.util;
public interface TV {
public void turnOn(); // abstract method
}
import com.encore.tv.domain.LgTV;
import com.encore.tv.domain.SamsungTV;
import com.encore.tv.factory.TvBeanFactory;
import com.encore.tv.util.TV;
public class TVClientMain {
public static void main(String[] args) {
/*
SamsungTV tv = new SamsungTV();
tv.powerOn();
LgTV tv = new LgTV();
tv.turnOn();
*/
/*
TV tv = new SamsungTV();
tv.turnOn();
*/
TvBeanFactory factory01 = TvBeanFactory.getInstance();
System.out.println(factory01);
TV tv = factory01.getBean("samsung");
tv.turnOn();
}
}
'한화시스템 BEYOND SW캠프 > TIL' 카테고리의 다른 글
[6주차] 24.02.13 화요일 (0) | 2024.02.13 |
---|---|
[5주차] 24.02.08 목요일 (0) | 2024.02.08 |
[5주차] 24.02.06 화요일 (0) | 2024.02.06 |
[5주차] 24.02.05 월요일 (0) | 2024.02.05 |
[4주차] 24.02.02 금요일 (0) | 2024.02.02 |