2011-08-02 40 views
9

Giải pháp thực tế để xây dựng triển khai năng động của giao diện và/hoặc lớp trừu tượng là gì? Những gì tôi về cơ bản muốn là:Triển khai động cho lớp giao diện/trừu tượng trong Java

interface IMyEntity { 
    int getValue1(); 
    void setValue1(int x); 
} 
... 
class MyEntityDispatcher implements WhateverDispatcher { 
    public Object handleCall(String methodName, Object[] args) { 
    if(methodName.equals("getValue1")) { 
     return new Integer(123); 
    } else if(methodName.equals("setValue")) { 
     ... 
    } 
    ... 
    } 
} 
... 
IMyEntity entity = Whatever.Implement<IMyEntity>(new MyEntityDispatcher()); 
entity.getValue1(); // returns 123 

Trả lời

15

Đây là lớp Proxy.

class MyInvocationHandler implements InvocationHandler { 
    Object invoke(Object proxy, Method method, Object[] args) { 
    if(method.getName().equals("getValue1")) { 
     return new Integer(123); 
    } else if(method.getName().equals("setValue")) { 
      ... 
    } 
    ... 
    } 
} 

InvocationHandler handler = new MyInvocationHandler(); 
IMyEntity e = (IMyEntity) Proxy.newProxyInstance(IMyEntity.class.getClassLoader(), 
               new Class[] { IMyEntity.class }, 
               handler); 
+2

Proxy chỉ khả dụng cho Giao diện, không phải lớp trừu tượng –

Các vấn đề liên quan