ForNext
Only Do What Only You Can Do
Adapter
VBScript
JScript
Perl
PHP
Python
Ruby
PowerShell
Scala
F#
C
C++
C++Builder
VC++
C#
Java
更新日 : 2010.11.24
■ MyClassB
public class MyClassB { private String date; public MyClassB(String date) { this.date = date; } public String getDate() { return date; } }
■ MyDateViewer
public class MyDateViewer { public void viewDate(MyClassB classB) { System.out.println(classB.getDate()); } }
■ MyClassA
// MyClassB と似た機能を持っているが、インターフェースが違うので // MyDateViewer から利用できない public class MyClassA { private String year; private String month; private String day; public MyClassA(String year, String month, String day) { this.year = year; this.month = month; this.day = day; } public String getYear() { return year; } public String getMonth() { return month; } public String getDay() { return day; } }
■ MyAdapter
// MyClassB と MyClassA との インターフェースの違いを // 吸収するクラス public class MyAdapter extends MyClassB { MyClassA classA; public MyAdapter(MyClassA classA) { // MyClassB のコンストラクタをダミーで呼ぶ super(null); this.classA = classA; } public String getDate() { String date = ""; date += classA.getYear(); date += "/"; date += classA.getMonth(); date += "/"; date += classA.getDay(); return date; } }
■ MyMain
public class MyMain { public static void main(String args[]) { MyClassA classA = new MyClassA("2000", "01", "01"); MyClassB adapter = new MyAdapter(classA); MyClassB classB = new MyClassB("1999/12/31"); // 同じインターフェースで使用できる MyDateViewer viewer = new MyDateViewer(); viewer.viewDate(adapter); viewer.viewDate(classB); } }
L:\>java MyMain 2000/01/01 1999/12/31