Java 패키지 - 활용
프로젝트를 작성 시 패키지를 활용하게 되는데, 다음과 같이 계층 구조를 가져본다. 실제 동작 코드는 아니나 애플리케이션을 크게 한 경우 패키지를 구성한다.
실제 프로젝트에서는 규모나 아키텍처에 따라 다르다.
com.kiioio
├user
│ ├User.class (+)
│ └UserService.class (+)
├product
│ ├Product.class (+)
│ └ProductService.class (+)
└order
├Order.class (+)
├OrderService.class (+)
└OrderHistory.class (+)
패키지에 대해 알아보는 시간이기 때문에 간략한 코드만 작성한다.
User.java
회원에 대한 객체
package com.kiioio.user;
public class User {
private String userId;
private String name;
}
UserService.java
회원을 관리하는 서비스
package com.kiioio.user;
public class UserService {
public UserService() {
System.out.println("UserService");
}
}
Product.java
제품에 대한 객체
package com.kiioio.product;
public class Product {
private String productId;
private int price;
}
ProductService.java
제품을 저장하고 관리하는 서비스
package com.kiioio.product;
public class ProductService {
public ProductService() {
System.out.println("ProductService");
}
}
Order.java
주문에 대한 객체
여기서 주문을 할 때 어떤 사용자인지 User 에 대한 정보가 필요하다.
그리고 주문한 제품 Product 정보가 필요하다.
각각 Import 가져오기로 불려오도록 해야한다.
package com.kiioio.order;
import com.kiioio.product.Product;
import com.kiioio.user.User;
public class Order {
private User user;
private Product product;
public Order(User user, Product product) {
this.user = user;
this.product = product;
}
}
User, Product 모두 각각 다른 패키지를 사용하는 모습을 볼 수 있다.
OrderHistory.java
주문 이력 확인하기
package com.kiioio.order;
public class OrderHistory {
public OrderHistory() {
System.out.println("Order History Constructor");
}
}
OrderService.java
주문하는 비즈니스 로직이다.
package com.kiioio.order;
import com.kiioio.product.Product;
import com.kiioio.user.User;
public class OrderService {
public void order() {
User user = new User();
Product product = new Product();
Order order = new Order(user, product);
}
}
회원을 만들고 상품을 만들고 주문해서 이 회원이 이 상품을 주문하는 것에 대한 구성이다.
패키지를 구성할 때는 관련된 클래스끼리 하나의 패키지로 묶고, 관련이 적은 클래스끼리는 다른 패키지로 분리한다.