Egloos | Log-in


디자인패턴을 이용한 객체 유효성 검사

디자인패턴을 이용한 객체 유효성 검사

  • 작성자 : 이지홍

    • 시나리오

         A와 B 웹 사이트가 있는데, A는 어떠한 서비스를 제공하는 웹 사이트며 B는 그 서비스를 이용하는 웹 사이트이다.

       서비스를 요청하고 응답하기위해 HttpClient 객체를 사용하며, 서비스를 이용하는 사이트는 다수 존재 할 수 있다.

       여기서 서비스를 제공하는 웹사이트인 A의 개발자는 A웹사이트에 요청을 전달하기위한 반복적인 로직과 개발비용을 줄이기위해

       자신의 서비스를 이용하는 사이트에 요청을 보낼 수 있는 모듈을 만들어 배포하였다.

    • 문제점

      • 서비스를 이용하는 B와 같은 사이트에서 HttpClient 객체에 실어 보내는 값들이 서비스를 사용하기 위한 필수 정보를 담고 있어야 하며, 요청전에 그 값들이 유효한 값들인지를 판단한 다음 HttpClient로 생성되어 전송 되어야만 한다. 또한 요청정보는 요청 금지어 리스트들을 포함하고 있지 않는지 체크해야만 한다.
    • 해결책

      • 요청정보를 담고있는 객체의 생성자에 유효성 검사 로직을 넣고 그 결과값을 private boolean 변수에 저장한 다음, 해당 변수는 getter만 생성하여 조회만 가능 하도록 구현 한다.
      • 요청을 생성하는 Service 객체에서 요청메소드를 호출할때 요청정보를 담고있는 객체의 변수 값을 확인 한 다음, 그 값이 유효할 경우에만 Service 객체를 통해 서비스를 호출 할수 있도록 한다.
    • 추가 설명
      •  클래스 구성 : RequestAction, RequestDataBean, RequestService,
      •  여기서 RequestAction은 A사이트에서 서비스를 사용하기 요청하는 액션이며, RequestDataBean은 요청정보를 담고 있는 데이터객체이다.

         RequestService는 유효성검사를 수행하기위한 기초 정보인 Static Final String[] arr_vanstring = {"#","!",..} 로 선언된 멤버변수를 가지고  있으며., RequestData객체를 생성하는 setCreateRequestData(String data1,int data2, ...) 메서드와  HttpClient객체를 생성하여   RequestDataBean 객체를  전송하는 setMakeHttpClient(RequestDataBean rdb1) 메서드를 가지고 있다.

         

    • A사이트에서 배포한 서비스를 요청하는 B사이트의 Action단의 코드 (RequestAction)

      1. public String RequestAction{
      2. RequestService requestService = null;

        1.  RequestDataBean rdb1=requestService.setCreateRequestData("이지홍",27) //요청 정보 생성 //Spring IOC에 의해 requestService 객체 인스턴스 화

        2.  if(rdb1.isValidate()){ //유효성 검사

        3. requestService.setMakeHttpClient(rdb1); //요청 전송

        4.  }

        5. else{

        6. retuen ERROR;

        7. }

        8. return SUCCESS;
        9. }
    • RequestService
    1.  private static final String arr_vanstring={"#","{"};
    2.  public RequestDataBean setCreateRequestData(String data1,int data2, ...){
    3.   .... 필요한 서비스 로직 수행
    4.   return new RequestDataBean(data1, data2, ...);
    5.  }
    6.  public void setMakeHttpClient(RequestDataBean rdb1){
    7.   HttpClient client =new HttpClient();
    8.   .... //빈즈의 내용을 httpclient객체에 담는다.
    9.    client.send();
    10.  }
    11.  public String getArr_vanstring(){
    12.    return RequestService.arr_vanstring;
    13.  }
    • RequestDataBean의 생성자 코드를 보자
  1. private String data1 = null;

  2. private int data2 = 0 ;

  3. private String arr_vanstringlist = null; //요청 금지어 리스트

  4. private boolean validate = false; //요청 유효성 검사 정보

  5. public String getData1(){

  6. return this.data1

  7. }

  8. public String getData2(){

  9. return this.data2

  10. }

  11.  

  12. public boolean isValidate(){

  13. return this.validate;

  14. }

  15. public RequestDataBean(String data1,int data2,String[] arr_vanstring){

  16. this.data1=data1;

  17. this.data2=data2;

  18. this.arr_vanstring=arr_vanstring;

  19. this.valiedate=this.setValidate(arr_vanstring);

  20. }

  21. //유효성검사 메서드
  22. private boolean setValidate(String[] arr_vanstring){
  23. boolean validate=false;
  24. if(data1 != null && data1.length>0){
  25.       ..... //유효성 확인 로직

    • validate=true;
  26. }
  27. else{

    • valiedate=false;
  28.  

    }

  29. return validate;

  30. }
  31. }

by 행복하자 | 2009/01/22 09:12 | JAVA 향기 | 트랙백 | 덧글(0)

트랙백 주소 : http://hongsgo.egloos.com/tb/2164323
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶