[디자인 패턴] ObserverBack-end/Java, Kotlin2021. 3. 29. 21:15
Table of Contents
public interface BroadcastStations {
List<FamilyHouse> subscriberList = new ArrayList<>();
default void register(FamilyHouse fm) {
subscriberList.add(fm);
String msg = String.format("[%s] : %s님이 구독하였습니다.\n"
, this.getClass().getSimpleName()
, fm.getClass().getSimpleName());
out.println(msg);
}
}
class Netflix implements BroadcastStations { }
class Watcha implements BroadcastStations { }
해당 interface를 상속받아서 Netflix나 Watch에 리스트를 등록해주는 코드이다.
이 코드에는 문제가 있다.
List 필드인데
해당 필드가 public static 으로 동작한다.
하지만 방송사에 따라서 달리 저장을 해 주어야 한다!
interface의 속성은 아래와 같다
- 모든 멤버변수는 Pu네ic static fin레 이어야 하며 , 이를 생략할 수 있다.
- 모든 메서드는 public abstract 이어야 하며 , 이를 생략할 수 있다.
단 , static메서드와 디폴트 메서드는 예외(JDK1.8부터)
public abstract class BroadcastStations {
List<FamilyHouse> subscriberList = new ArrayList<>();
public void register(FamilyHouse fm) {
subscriberList.add(fm);
String msg = String.format("[%s] : %s님이 구독하였습니다.\n"
, this.getClass().getSimpleName()
, fm.getClass().getSimpleName());
out.println(msg);
}
}
class Netflix extends BroadcastStations { }
class Watcha extends BroadcastStations { }
위와 같이 바꾸면 List가 이제 static영역이 아닌 객체영역으로 동작한다.
'Back-end > Java, Kotlin' 카테고리의 다른 글
Annotaion 처리부 구현 (값 주입, Trim) (0) | 2021.04.27 |
---|---|
Reflection : 그누므 리플렉션이 모야 !! (ft. 애노떼이숀, 쩨네릭) (0) | 2021.04.08 |
[디자인 패턴] Strategy (ft. 오바와치) (0) | 2021.03.27 |
json인듯 아닌듯 한 데이터를 jsonParsing하기 (0) | 2021.03.14 |
외부에서 다운받은 jar 추가하기 (0) | 2021.03.14 |
@philo0407 :: Philo의 다락방
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!