Programming/기타

핵사고날 아키텍처의 설계와 구현 - 서비스

armyost 2023. 10. 26. 06:45
728x90

서비스

토폴로지 및 인벤토리 시스템은 네트워크 자산의 가상화와 관리에 대한 것이므로 사용자가 이러한 네트 워크 자산의 컬렉션을 처리할 수 있게 해야 한다. 이를 수행하는 방법 중 하나는 서비스를 이용하는 것이 다. 서비스를 통해 시스템 엔티티와 값 객체를 처리하기 위한 동작을 정의할 수 있다.

 

라우터 서비스
앞에서 Router , CoreRouter , EdgeRouter 엔티티를 구현할 때 라우터 컬렉션을 필터링하는 프레디케이 트를 반환하는 메서드도 작성했다. 도메인 서비스를 사용하면 다음과 같이 그러한 컬렉션을 필터링하는 다음과 같은 프레디케이트를 사용할 수 있다.

package dev.davivieira.topologyinventory.domain.service;
import dev.davivieira.topologyinventory.domain.entity.Equipment;
import dev.davivieira.topologyinventory.domain.entity.Router;
import dev.davivieira.topologyinventory.domain.vo.Id;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class RouterService {
	public static List<Router> filterAndRetrieveRouter(List<Router> routers,Predicate<Equipment> routerPredicate){ return routers .stream()
.filter(routerPredicate) .collect(Collectors.<Router>toList());
	}
	public static Router findById(Map<Id,Router> routers, Id id){ 
    	return routers.get(id);
	} 
}


filterAndRetrieveRouter 메서드에서는 라우터 리스트와 해당 리스트를 필터링하기 위한 프레디케이트를 파라미터로 전달한다. 그다음, Id 타입의 매개변수를 사용해 라우터를 조회하는 findById 메서드를 정의 한다.