Container, Factory // service.wakeUp(); // service.eat(); // } // } // class Service { // public void wakeUp() { // System.out.println("일어납니다."); // } // public void eat() { // System.out.println("밥을 먹습니다."); // } // } class Controller { private ServiceContainer serviceContainer = new ServiceContainer(); public void run() { System.out.println("하루 일과를 시작합니다."); for(Service service : serviceContainer.getServiceList()) { service.process(); } } } interface Service { public void process(); } class WakeUpService implemen"> Container, Factory // service.wakeUp(); // service.eat(); // } // } // class Service { // public void wakeUp() { // System.out.println("일어납니다."); // } // public void eat() { // System.out.println("밥을 먹습니다."); // } // } class Controller { private ServiceContainer serviceContainer = new ServiceContainer(); public void run() { System.out.println("하루 일과를 시작합니다."); for(Service service : serviceContainer.getServiceList()) { service.process(); } } } interface Service { public void process(); } class WakeUpService implemen"> Container, Factory // service.wakeUp(); // service.eat(); // } // } // class Service { // public void wakeUp() { // System.out.println("일어납니다."); // } // public void eat() { // System.out.println("밥을 먹습니다."); // } // } class Controller { private ServiceContainer serviceContainer = new ServiceContainer(); public void run() { System.out.println("하루 일과를 시작합니다."); for(Service service : serviceContainer.getServiceList()) { service.process(); } } } interface Service { public void process(); } class WakeUpService implemen">
package p5;
import java.util.*;
public class App {
public static void main(String[] args) {
// 하루 일과 프로그램...
new Controller().run();
}
}
// class Controller {
// private Service service = new Service();
// public void run() {
// System.out.println("하루 일과를 시작합니다.");
// // Service에서 기능을 확장했더니 실행시키는 쪽도 수정해야 한다. -> Container, Factory
// service.wakeUp();
// service.eat();
// }
// }
// class Service {
// public void wakeUp() {
// System.out.println("일어납니다.");
// }
// public void eat() {
// System.out.println("밥을 먹습니다.");
// }
// }
class Controller {
private ServiceContainer serviceContainer = new ServiceContainer();
public void run() {
System.out.println("하루 일과를 시작합니다.");
for(Service service : serviceContainer.getServiceList()) {
service.process();
}
}
}
interface Service {
public void process();
}
class WakeUpService implements Service {
@Override
public void process() {
System.out.println("일어납니다.");
}
}
class EatService implements Service {
public void process() {
System.out.println("밥을 먹습니다.");
}
}
class StudyService implements Service {
public void process() {
System.out.println("공부를 합니다.");
}
}
class ServiceContainer {
private List<Service> list = new ArrayList<>();
public ServiceContainer() {
list.add(new WakeUpService());
list.add(new EatService());
list.add(new StudyService());
}
public List<Service> getServiceList() {
return list;
}
}
무조건 순차대로 실행한다면 인터페이스를 이렇게 사용할 수 있다.