>  기사  >  Java  >  Java 어댑터 패턴을 구현하는 방법

Java 어댑터 패턴을 구현하는 방법

黄舟
黄舟원래의
2017-03-10 11:57:021673검색

이러한 상황이 자주 발생합니다. 두 개의 기성 클래스가 있고 둘 사이에 연결이 없지만 이제 한 클래스의 메서드와 다른 클래스의 메서드를 사용하려고 합니다. 한 가지 해결책은 해당 인터페이스를 수정하는 것이지만 이것이 우리가 보고 싶은 마지막 사항입니다. 이때 어댑터 모드가 유용할 것입니다

어댑터 모드를 적용하는 방법에는 세 가지가 있습니다. 하나는 객체 어댑터, 다른 하나는 클래스 어댑터, 다른 하나는 인터페이스 어댑터입니다

다음 예는 다음을 보여줍니다.

클래스 어댑터 클래스 다이어그램



public class DrawRectangle {//画方
	public void drawRectangle(String msg) {
		System.out.println("draw Rectangle: " + msg);
	}
}
public interface IDrawCircle {//画圆的接口
	void drawCircle();
}
/**
 * 类适配器 使用对象继承的方式,是静态的定义方式
 * @author stone
 *
 */
public class DrawAdapter4Class extends DrawRectangle implements IDrawCircle {//既能画方又能画圆

	@Override
	public void drawCircle() {
		System.out.println("DrawAdapter4Class: drawCircle");
	}
	
}

객체 어댑터 클래스 다이어그램 :


rreee


인터페이스 어댑터

클래스 다이어그램




rreee


/**
 * 对象适配器: 使用对象组合的方式,是动态组合的方式。
 * 既能画方又能画圆
 * @author stone
 * DrawAdapter是适配器,DrawRectangle属于adapter,是被适配者,适配器将被适配者和适配目标(DrawCircle)进行适配
 *
 */
public class DrawAdapter4Object implements IDrawCircle {//既能画方又能画圆
	
	private DrawRectangle drawRectangle;
	public DrawAdapter4Object(DrawRectangle drawRectangle) {
		this.drawRectangle = drawRectangle;
	}
	
	@Override
	public void drawCircle() {
		System.out.println("DrawAdapter4Object: drawcircle");
	}
	
	public void drawRectangle(String msg) {
		drawRectangle.drawRectangle(msg);
	} 
	
}


/*
 * 接口适配器:接口中有抽象方法,我们只想实现其中的几个,不想全部实现,
 * 所以提供一个默认空实现,然后继承自它,重写实现我们想实现的方法
 */
public interface IDraw {
	void drawCircle();
	void drawRectangle();
}

인쇄

으아악

위 내용은 Java 어댑터 패턴을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.