首先是類Adapter。
- interface Operation{
- public int add(int a,int b);
- }
- class Calculater{
- public int otherAdd(int a,int b){
- return a + b;
- }
- }
- class OperationAdapter extends Calculater implements Operation{
- @Override
- public int add(int a, int b) {
- // TODO Auto-generated method stub
- return otherAdd(a,b);
- }
- }
- public class Test{
- public static void main(String[] args){
- OperationAdapter adapter = new OperationAdapter();
- int x = 10;
- int y = 20;
- int sum = adapter.add(x, y);
- System.out.println(x + " + " + y + " = " + sum);
- }
- }
上面的代碼中,OperationAdapter這個類將Calculater的add()方法適配到Operation這個類裏面,OperationAdapter就是一個適配器。這樣做有一個問題,當適配器需要從多個類裏面調用方法的時候,類Adapter方法就不適用了,因爲java不允許多重繼承,既然不能用繼承,那麼就用組合好了,因此,就有了對象Adapter。
- package adapter.objectAdapter;
- interface Operation{
- public int add(int a,int b);
- public int minus(int a,int b);
- public int multiplied(int a,int b);
- }
- class OtherAdd{
- public int otherAdd(int a,int b){
- return a + b;
- }
- }
- class OtherMinus{
- public int minus(int a,int b){
- return a - b;
- }
- }
- class OtherMultiplied{
- public int multiplied(int a,int b){
- return a * b;
- }
- }
- class OperationAdapter implements Operation{
- private OtherAdd add;
- private OtherMinus minus;
- private OtherMultiplied multiplied;
- public OperationAdapter(){
- add = new OtherAdd();
- minus = new OtherMinus();
- multiplied = new OtherMultiplied();
- }
- @Override
- public int add(int a, int b) {
- // TODO Auto-generated method stub
- return add.otherAdd(a,b);
- }
- @Override
- public int minus(int a, int b) {
- // TODO Auto-generated method stub
- return minus.minus(a,b);
- }
- @Override
- public int multiplied(int a, int b) {
- // TODO Auto-generated method stub
- return multiplied.multiplied(a,b);
- }
- }
- public class Test{
- public static void main(String[] args){
- OperationAdapter adapter = new OperationAdapter();
- int x = 10;
- int y = 20;
- System.out.println(x + " + " + y + " = " + adapter.add(x, y));
- System.out.println(x + " - " + y + " = " + adapter.minus(x, y));
- System.out.println(x + " * " + y + " = " + adapter.multiplied(x, y));
- }
- }
總的來說,對象Adapter比起類Adapter來說要更有用一些,代碼很簡單,不解釋,你們懂的。