본문 바로가기

한화시스템 BEYOND SW캠프/TIL

[5주차] 24.02.07 수요일

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