ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 디자인 패턴
    jsp 2023. 3. 27. 18:04
    장점
    개발자간에 원할한 소통
    소프트웨어 구조파악이 용이
    재사용을 통한 개발 시간을 단축
    설계 변경 요청에 유연한 처리

    단점
    객체지향 설계 / 구현
    초기 투자비용에 대한 부담

    생성 패턴 : 객체를 생성하는 것과 관련된 패턴 (싱글톤 패턴, 빌더 패턴, 팩토리 메서드 패턴)

    구조 패턴 : 프로그램 내의 자료구조나 인터페이스 구조 등을 설계하는데 활용 될수 있는 패턴, 복잡한 구조를 개발하기 쉽게 만들어 주고, 유지 보수 하기 쉽게 만들어 준다.
    (어댑터 패턴, 데코레이터 패턴,파사스, 프록시 패턴)

    행위 패턴 : 반복적으로 사용되는 객체들의 상호 작용을 패턴화한 것으로 클래스들간에 책임을 분산하는 방법을 제공( 템플릿 메서드 패턴, 이터레이터(해시),옵저버 패턴(행동을 취할 때 알려주는 패턴), 스트래티지 패턴(전략)

     

    어댑터 패턴

    원래 있던 데이터를 적절한 데이터로 주기 위해서 중간역할을 하는것을 어댑터 패턴이라고 한다.

     

    어댑터 패턴은 주로 어디에 사용하는가?

    - 외부 구성 요소를 기존 시스템에 재사용하고 싶지만 호환되지 않는 경우

    - 애플리케이션이 클라이언트가 기대하는 인터페이스와 호환되지 않는 경우

    - 원본 코드를 수정하지 않고 애플리케이션에서 레거시 코드를 재사용하려는 경우

     

    어댑터 패턴은 중간에서 변환해주는 클래스가 필요하다.

     

    장점

    기존코드를 변경하지 않고 원하는 인터페이스 구현체를 만들어 사용할 수 있다.

     

    단점

    새클래스가 생겨 복잡도가 증가할 수 있다.

    경우에 따라서는 기존 코드가 해당 인터페이스를 구현하도록 수정하는 것이 좋은 선택이 될수도 잇다.

     

    어댑터 구조 패턴이 언제 사용되는가?

    클라이언트가 요구하는 인터페이스와 제공된 클래스의 인터페이스가 일치하지 않을 때 많이 사용된다(클라이언트 요구에 따라 좀더 코드를 유연하게 짤 수있다)

     

     

    package ch01;
    
    public class MyHouse {
    
    	public static void main(String[] args) {
    		
    		AirConditioner airConditioner = new AirConditioner();
    		Cleaner cleaner = new Cleaner();
    		HairDryer dryer = new HairDryer();
    		Coffeemachine coffeemachine = new Coffeemachine();
    		//다형성
    		
    		connect(airConditioner);
    		connect(cleaner);
    		
    		//220v만 사용 가능할 때 110v를 사용하고 싶으면 어댑터를 철물점에 사오는 개념이랑 같다.
    		TencoAdapter adapterHairDryer = new TencoAdapter(dryer);
    		connect(adapterHairDryer);
    		
    		TencoAdapter adapterCoffeemachine = new TencoAdapter(coffeemachine);
    		connect(adapterCoffeemachine);
    		
    		
    	}	//end of main
    
    	//Myhouse static 전기 콘센트
    	//MyHouse랑 AirConditioner,cleaner 랑 상호작용 하게 할려면 어떻게 해야할까?
    	// airConditioner만 할때는 괄호안에 airConditioner만 넣으면 되지만 둘다 번갈아 쓰고 싶을때 다형성을 이용해 Electronic220v로 바라볼수 있다.
    	public static void connect(Electronic220v electronic220v) {
    		electronic220v.connect();
    	}
    	
    }	//end of class

     

     

     

    'jsp' 카테고리의 다른 글

    JSP 파일 업로드  (0) 2023.04.06
    JSP WEB_INF + Filter  (0) 2023.04.05
    JSP RequestDispatcher  (0) 2023.03.27
    application 내장 객체  (0) 2023.03.27
    config 내장객체  (0) 2023.03.27
Designed by Tistory.