개념, 명세, 구현 관점 순서대로 개발
개념 관점
- 도메인
- 실제 도메인의 규칙과 제약을 최대한 반영
명세 관점
- 공용 인터페이스
- 객체들의 책임에 초점
구현 관점
- 클래스의 속성, 메서드
- '어떻게' 수행 할 것인가에 초점
public class Customer {
public Coffee order(String menuName, Menu menu, Barista barista) {
MenuItem menuItem = menu.chooseMenu(menuName);
Coffee coffee = barista.makeCoffee(menuItem);
return coffee;
}
}
public class Menu {
private List<MenuItem> menuItemList;
public Menu(List<MenuItem> menuItemList) {
this.menuItemList = menuItemList;
}
public MenuItem chooseMenu(String menuName) {
for (MenuItem menuItem : menuItemList) {
if (menuItem.getName().equals(menuName)) {
return menuItem;
}
}
return null;
}
}
public class MenuItem {
private String name;
private int price;
public MenuItem() {
}
public MenuItem(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
public class Barista {
public Coffee makeCoffee(MenuItem menuItem) {
Coffee coffee = new Coffee(menuItem);
return coffee;
}
}
public class Coffee {
private String name;
private int price;
public Coffee(MenuItem menuItem) {
this.name = menuItem.getName();
this.price = menuItem.getPrice();
}
}
'Book > 객체지향의 사실과 오해' 카테고리의 다른 글
[Book] 되새김질 (0) | 2022.02.22 |
---|---|
[Book] 3장) 타입과 추상화 (0) | 2022.02.16 |
[Book] 1장) 협력하는 객체 (0) | 2022.02.16 |
[Book] 6장) 객체 지도 (0) | 2022.02.13 |
[Book] 5장) 책임과 메시지 (0) | 2022.02.12 |
[Book] 4장) 역할, 책임, 협력 (0) | 2022.02.09 |
[Book] 2장) 이상한 나라의 객체 (0) | 2022.02.07 |