디자인 모드 의 액세서리 모드

2767 단어 디자인 모드
개념
어댑터 모드: 사용자 가 기대 하 는 인터페이스 로 인 터 페 이 스 를 맞 춥 니 다.즉, 외부 에서 원 하 는 인 터 페 이 스 를 정의 하여 호 환 되 지 않 아 함께 일 할 수 없 는 유형 들 을 함께 일 하 게 하 는 것 이다.일반적인 방법 은 자신의 인 터 페 이 스 를 이미 존재 하 는 클래스 에 감 싸 는 것 이다.소프트웨어 개발 에서 어떤 종 류 를 재 활용 하려 면 재 활용 해 야 하지만 환경 과 호 환 되 지 않 을 때 어댑터 모델 을 사용 해 야 한다. 구체 적 으로 말 하면 현재 시스템 의 행위 와 데이터 가 모두 정확 하지만 인터페이스 가 맞지 않 으 면 어댑터 모델 을 사용 해 야 한다.
2. 두 가지 어댑터 모드
(1) 대상 어댑터 모드: 이 어댑터 모드 에서 어댑터 는 패키지 의 클래스 를 수용 합 니 다. 즉, 어댑터 가 패키지 대상 의 실 체 를 호출 합 니 다.
(2) 클래스 어댑터 모드: 이러한 어댑터 모드 에서 어댑터 는 자신 이 실현 한 클래스 를 계승 합 니 다.
3. 예 를 들 어 (참여 사이트)
NBA 경기 에서 만약 에 외국 국적 의 스타 가 NBA 에 가입 하면 그 는 영 어 를 모 르 고 단기 적 으로 영 어 를 배 우 는 것 도 쉬 운 일이 아니다. NBA 의 다른 선수 들 도 그의 언어 를 모른다 면 이런 상황 에서 가장 좋 은 선택 은 당연히 통역 을 찾 는 것 이 비교적 편리 하 다.이 번역 은 바로 여기 서 언급 한 어댑터 이다. 그러면 NBA 외국 국적 의 스타, 예 를 들 어 야 오 밍, NBA 경기 에 가입 하 는 장면 은 코드 로 이 루어 진다.
public class AdapterMode{
    //     
    public abstract class Player{
        protected String name;
        public Player(){}
        public Player(String name){
        	this.name = name;
        	}
        public abstract void attack();
    }

    //    
    public class NativeNBAPlayer extends Player{
        public NativeNBAPlayer(String name){
        	super(name);
        	}
        public void attack(){
            System.out.println("I am native NBA player, I am attacking!");
        }
    } 

    //    
    public class ForeignNBAPlayer extends Player{
        public ForeignNBAPlayer(){}
        public ForeignNBAPlayer(String name){
        	super(name);
        	}
        public void attack(){
            System.out.println("      ,    !");
        }
    }

    public class Translator{
        private String name;
        private Player foreignNBAPlayer;
        public Translator(String name,Player foreignNBAPlayer){
        	this.name = name;
        	this.foreignNBAPlayer = foreignNBAPlayer;
        }
        public void translatorAttack(){
            foreignNBAPlayer.attack();
        }

    }

    //    
    public static void main(String[] args){
        AdapterMode am = new AdapterMode();

        Player nativeNBAPlayer = am.new NativeNBAPlayer("Kobe");
        Player foreignNBAPlayer = am.new ForeignNBAPlayer("  ");

        nativeNBAPlayer.attack();
        Translator translator = am.new Translator("   ",foreignNBAPlayer);
        translator.translatorAttack();
    }
}

총화
1. 어댑터 모델 은 외부 에서 원 하 는 인 터 페 이 스 를 정의 하여 원래 관련 되 지 않 은 클래스 가 협동 작업 을 할 수 있 도록 한다.2. 재 활용 이 필요 한 유형 과 재 활용 환경의 차이 가 비교적 많 을 때 어댑터 모델 을 사용 하 는 것 을 고려 할 수 있다.3. 협동 작업 이 필요 한 쌍방 이 자신의 코드 를 수정 하지 않 거나 쌍방 이 수정 하 는 원가 가 비교적 클 때 어댑터 모델 을 사용 하 는 것 을 고려 할 수 있다.4. 어댑터 모델 은 고객 호출 에 통 일 된 인 터 페 이 스 를 제공 하여 고객 의 호출 을 더욱 간단 하고 직접적 이 며 치밀 하 게 한다.

좋은 웹페이지 즐겨찾기