class Programming {
public void code() {
}
public void debug() {
}
}
interface ModernProgramming {
void ide();
}
class SurrogateAdapter implements ModernProgramming {
Programming programming;
public SurrogateAdapter(Programming wih) {
programming = wih;
}
public void ide() {
programming.code();
programming.debug();
}
}
class DailyJob {
public void work(ModernProgramming wiw) {
wiw.ide();
}
}
class Coder extends DailyJob {
public void op(Programming wih) {
new SurrogateAdapter(wih).ide();
}
}
class Coder2 extends Programming implements ModernProgramming {
public void ide() {
code();
debug();
}
}
class Coder3 extends Programming {
private class InnerAdapter implements ModernProgramming {
public void ide() {
code();
debug();
}
}
public ModernProgramming whatIWant() {
return new InnerAdapter();
}
}
public class AdapterVariations {
public static void main(String args[]) {
DailyJob whatIUse = new DailyJob();
Programming whatIHave = new Programming();
ModernProgramming adapt = new SurrogateAdapter(whatIHave);
Coder coder = new Coder();
Coder2 coder2 = new Coder2();
Coder3 coder3 = new Coder3();
whatIUse.work(adapt);
// Approach 2:
coder.op(whatIHave);
// Approach 3:
whatIUse.work(coder2);
// Approach 4:
whatIUse.work(coder3.whatIWant());
}
}
|