2017-03-07 8 views
-1

car_details, bike_details, truck_details로 세 개의 테이블이 있습니다 (RegistrationNo, No.ofYearsOld, OwnerName, ContactNo, VehicleType) VehicleType 필드는 차량 (자동차 또는 자전거 또는 트럭)의 유형을 지정해야하며 기본값은 자동차입니다. 전략 패턴을 사용하여 특정 필드를 고려하여 테이블을 전환하고 데이터를 저장합니다.

세 테이블

내가 vehicleType 필드를 고려하여 해당 테이블에 데이터를 저장해야하는 작업은 각자의 POJO 및 저장소

있습니다. 내 컨트롤러

@RequestMapping (value = "/createVehicle/", method = RequestMethod.POST, consumes = "application/json") 
@ResponseBody 
public ResponseEntity<> createGeneralAuthentication (@RequestBody CarDetails carDetails) { 


     public void roleSelector(String type) { 

      switch (type){ 
       case "car": 
        return new CarRepository(); 
       break; 
       case "bike": 
        return new BikeRepository(); 
       break; 
       case "truk": 
        return new TruckRepository(); 
       break; 
      } 
     } 
    RolesRepository rolesRepository = new roleSelector(carDetails.getType()); 

     try { 
      rolesRepository.save(carDetails); 
     } catch (Exception ex) { 
      return new ResponseEntity<>(HttpStatus.NOT_FOUND); 

     } 
      return new ResponseEntity<>(HttpStatus.OK); 
    } 

없음 다른 경우에

는 전략 패턴 할 필요가 사용되어야한다.

+0

스프링 애플리케이션에서'new'를 사용하는 것에 더 신경을 씁니다 (대부분 작동하지 않습니다). –

답변

0

실제로 이미 전략 패턴입니다. 각 구현은 다르게 동작하며 구현 세부 사항을 추상화하기 위해 단일 인터페이스를 사용하고 있습니다. 여기서 roleSelector 메서드는 인스턴스 (예 : 팩토리)를 만드는 데 사용됩니다.

+0

하지만 실제로이 코드는 작동하지 않습니다. 필요한 것은이 패턴을 실행 가능하게 만드는 것입니다. –

+0

어떻게 작동하지 않습니까? 어떤 오류/예외가 발생합니까? 왜 그 질문에 언급하지 않았 니? 내 생각 엔 Spring에서 빈을 주입하고 사용하는 대신'new'를 사용하기 때문에 NullPointerException을 가졌다는 것입니다. –

+0

사실, 여러 개의 오류가 있습니다. 내가 지나가고있는 객체는 carDetails이며 그런 다음 유형을 고려하여 해당 저장소를 선택해야합니다. 또한 저장소와 일치하도록 개체 유형을 변경해야합니다. 어떻게 우리가 그렇게 할 수 있을까요? 인터페이스를 저장소로 만들려고했으나 만들 수 없습니다. –