publicclassT{publicstaticvoidmain(String[] args){Duck d =newDuck("白天鹅",newFlyImpl());
d.fly();Duck e =newDuck("丑小鸭",newNotFlyImpl());
e.fly();}}interfaceFlyAble{publicvoidfly();}classFlyImplimplementsFlyAble{publicvoidfly(){System.out.println("I can fly...");}}classNotFlyImplimplementsFlyAble{publicvoidfly(){System.out.println("I can not fly...");}}classDuck{publicString name;publicFlyAble fly;publicDuck(String name,FlyAble fly){this.name = name;this.fly = fly;}publicvoidfly(){System.out.println("My name is"+this.name);
fly.fly();}}
classT{publicstaticvoidmain(String[] args){PowerA a =newPowerAImpl();input(a);// b 适配 aPowerB b =newPowerBImpl();PowerAdapter adapter =newPowerAdapter(b);input(adapter);}publicstaticvoidinput(PowerA a){
a.connect();}}interfacePowerA{publicvoidconnect();}classPowerAImplimplementsPowerA{publicvoidconnect(){System.out.println("接口A正常工作...");}}interfacePowerB{publicvoidinsert();}classPowerImplimplementsPowerB{publicvoidinsert(){System.out.println("接口B正常工作...");}}// b 接口 适配 a 接口classPowerAdapterimplementsPowerA{privatePowerB b;publicPowerAdapter(PowerB b){this.b = b;}publicvoidconnect(){
b.insert()}}
1.模板方法设计模式定义一个操作中算法的骨架,而将一些可变的部分 延伸到子类中,以不改变一个算法的结构,即可重新定义该算法的某些步骤abstract class Animal{ public String name; public Animal(String name){ this.name = name; } // 该抽象方法 用于在子类中实现 public abstract void hobby();}class Dog extends Animal{ public Dog