public interface BridgeSource <T > {
T insert(T t);
void delete(T t);
T update(T t);
T select(T t);
}
public class BridgeSourceImpl1 implements BridgeSource {
@Override
public Object insert (Object t) {
System.out.println("1 : insert" );
return null ;
}
@Override
public void delete (Object t) {
System.out.println("1 : delete" );
}
@Override
public Object update (Object t) {
System.out.println("1 : update" );
return null ;
}
@Override
public Object select (Object t) {
System.out.println("1 : select" );
return null ;
}
}
public class BridgeSourceImpl2 implements BridgeSource {
@Override
public Object insert (Object t) {
System.out.println("2 : insert" );
return null ;
}
@Override
public void delete (Object t) {
System.out.println("2 : delete" );
}
@Override
public Object update (Object t) {
System.out.println("2 : update" );
return null ;
}
@Override
public Object select (Object t) {
System.out.println("2 : select" );
return null ;
}
}
public class BridgeSourceImpl3 implements BridgeSource {
@Override
public Object insert (Object t) {
System.out.println("3 : insert" );
return null ;
}
@Override
public void delete (Object t) {
System.out.println("3 : delete" );
}
@Override
public Object update (Object t) {
System.out.println("3 : update" );
return null ;
}
@Override
public Object select (Object t) {
System.out.println("3 : select" );
return null ;
}
}
public abstract class Bridge <T > {
private BridgeSource bridgeSource;
protected T insert (T t){
return (T) bridgeSource.insert(t);
}
protected void delete (T t){
bridgeSource.delete(t);
}
protected T update (T t){
return (T) bridgeSource.update(t);
}
protected T select (T t){
return (T) bridgeSource.select(t);
}
public BridgeSource getBridgeSource () {
return bridgeSource;
}
public void setBridgeSource (BridgeSource bridgeSource) {
this .bridgeSource = bridgeSource;
}
}
public class ProjectBridge <T > extends Bridge {
@Override
protected Object insert (Object t) {
return super .insert(t);
}
@Override
protected void delete (Object t) {
super .delete(t);
}
@Override
protected Object update (Object t) {
return super .update(t);
}
@Override
protected Object select (Object t) {
return super .select(t);
}
public static BridgeSource initInstance (){
return new BridgeSourceImpl2();
}
public static void main (String[] args) {
Bridge bridge = new ProjectBridge();
bridge.setBridgeSource(ProjectBridge.initInstance());
bridge.insert("" );
bridge.delete("" );
bridge.update("" );
bridge.select("" );
}
}