이러한 상황이 자주 발생합니다. 두 개의 기성 클래스가 있고 둘 사이에 연결이 없지만 이제 한 클래스의 메서드와 다른 클래스의 메서드를 사용하려고 합니다. 한 가지 해결책은 해당 인터페이스를 수정하는 것이지만 이것이 우리가 보고 싶은 마지막 사항입니다. 이때 어댑터 모드가 유용할 것입니다
어댑터 모드를 적용하는 방법에는 세 가지가 있습니다. 하나는 객체 어댑터, 다른 하나는 클래스 어댑터, 다른 하나는 인터페이스 어댑터입니다
다음 예는 다음을 보여줍니다.
클래스 어댑터 클래스 다이어그램
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"); } }
객체 어댑터 클래스 다이어그램 :
인터페이스 어댑터
클래스 다이어그램
/** * 对象适配器: 使用对象组合的方式,是动态组合的方式。 * 既能画方又能画圆 * @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 중국어 웹사이트의 기타 관련 기사를 참조하세요!