큰소리 디자인 모델 의 어댑터 모델 총화 - 자바 실현
9044 단어 디자인 모드
만약 에 다음 과 같은 장면 이 있다 면 농구 경기 감독 이 타임 을 부 를 때 수비 수 센터 공격수 에 게 공격 과 수비 임 무 를 배정 하 는 간단 한 코드 는 다음 과 같다.
선수 류
package Test17;
//
public abstract class Player {
protected String name;
public Player(String name)
{
this.name = name;
}
public abstract void Attack();
public abstract void Defense();
}
스 트 라 이 커 센터
package Test17;
//
public class Forwards extends Player {
public Forwards(String name) {
super(name);
}
@Override
public void Attack() {
System.out.println(" "+name+" ");
}
@Override
public void Defense() {
System.out.println(" "+name+" ");
}
}
package Test17;
//
public class Center extends Player {
public Center(String name) {
super(name);
}
@Override
public void Attack() {
System.out.println(" "+name+" ");
}
@Override
public void Defense() {
System.out.println(" "+name+" ");
}
}
package Test17;
//
public class Guards extends Player {
public Guards(String name) {
super(name);
}
@Override
public void Attack() {
System.out.println(" "+name+" ");
}
@Override
public void Defense() {
System.out.println(" "+name+" ");
}
}
클 라 이언 트 코드
package Test17;
public class Program {
public static void main(String[] args) {
Player b = new Forwards(" ");
b.Attack();
Player m = new Guards(" ");
m.Attack();
Player ym = new Center(" ");
ym.Attack();
ym.Defense();
}
}
만약 에 외국 계 센터 가 영 어 를 못 알 아 듣 고 코치 님 이 말씀 하 시 는 영어 공격 수 비 를 못 알 아 듣 겠 다 면 우 리 는 번역자 류 가 있어 야 한다. 그 다음 에 우 리 는 어댑터 모델 로 재 구성 코드 를 다음 과 같이 해 야 한다.
외국 국적 의 센터 클래스
package Test17;
//
public class ForeignCenter {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void ()
{
System.out.println(" "+name+" ");
}
public void ()
{
System.out.println(" "+name+" ");
}
}
번역자 류
package Test17;
//
public class Translator extends Player {
private ForeignCenter wjzf = new ForeignCenter();
public Translator(String name) {
super(name);
wjzf.setName(name);
}
@Override
public void Attack()
{
wjzf. ();
}
@Override
public void Defense()
{
wjzf. ();
}
}
클 라 이언 트 코드
package Test17;
public class Program {
public static void main(String[] args) {
Player b = new Forwards(" ");
b.Attack();
Player m = new Guards(" ");
m.Attack();
//Player ym = new Center(" ");
Player ym = new Translator(" ");
ym.Attack();
ym.Defense();
}
}
어댑터 모드 는 하나의 인 터 페 이 스 를 고객 이 원 하 는 다른 인터페이스 어댑터 모드 로 바 꾸 어 인터페이스 가 호 환 되 지 않 아 함께 작업 할 수 없 었 던 클래스 들 을 함께 작업 할 수 있 게 합 니 다.
소프트웨어 개발 에서 즉, 시스템 의 데이터 와 행위 가 모두 정확 하지만 인터페이스 가 일치 하지 않 을 때 우 리 는 어댑터 를 사용 하 는 목적 은 제어 범위 이외 의 기 존 대상 이 특정한 인터페이스 와 일치 하도록 하 는 것 을 고려 해 야 한다.
이미 존재 하 는 종 류 를 사용 하고 싶 지만 인터페이스, 즉 그것 의 방법 이 당신 의 요구 와 다르다 면 어댑터 모드 를 사용 하 는 것 을 고려 해 야 합 니 다.
두 가지 일 은 같 거나 비슷 하지만 서로 다른 인 터 페 이 스 를 가지 고 있 을 때 이 를 사용 하면 고객 코드 가 같은 인 터 페 이 스 를 통일 적 으로 호출 하면 더욱 간단 하고 직접적 이 며 치밀 할 수 있다.
쌍방 이 수정 하기 가 쉽 지 않 을 때 어댑터 모드 를 사용 하 는 것 이 적당 하 다.
단점 은 대상 어댑터 에 있어 서 어댑터 를 교체 하 는 실현 과정 이 비교적 복잡 하 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.