Layered Architecture
Last updated
Last updated
// Presentation Layer
class UserController {
private UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
public void registerUser(String username, String password) {
// Presentation Layer에서 받은 요청을 비즈니스 로직 레이어로 전달
userService.registerUser(username, password);
}
}
// Business Logic Layer
class UserService {
private UserRepository userRepository;
public UserService(UserRepository userRepository){
this.userRepository = userRepository;
}
public void registerUser(String username, String password) {
// 비즈니스 로직 수행
if (isValidUser(username)) {
userRepository.saveUser(username, password)
} else {
System.out.println('invalid username');
}
}
private boolean isValidUser(String username) {
// 실제 유효성 검사 로직은 여기 구현
return username !== null && !username.isEmpty()
}
}
// Data Access Layer
class UserRepository {
public void saveUser(String username, String password) {
// 데이터베이스에 사용자 정보 저장
System.out.println('saving user to the db');
}
}
// client code
public class LayeredArchitectureExample {
public static void main(String[] args) {
// 각 레이어의 인스턴스 생성
UserRepository userRepository = new UserRepository();
UserService userService = new UserService(userRepository);
UserController userController = new UserController(userService);
// 사용자 등록 요청
userController.registerUser("john_doe", "password");
}
}