设计原则:
1、面向接口编程(面向抽象编程)
2、封装变化
3、多用组合,少用继承
4、对修改关闭,对扩展开发,不要修改原来的方法.
举例:
1、接口 //适配器 class Adapter implements BiteAction{ private TickleAction tickleAction; public Adapter(TickleAction tickleAction){ this.tickleAction = tickleAction; } @Override public void doBiteSamthing() { this.tickleAction.doTickleSamthing(); } } //接口 interface BiteAction{ void doBiteSamthing(); } class DogActionImpl implements BiteAction{ @Override public void doBiteSamthing() { System.out.println("狗开始咬人"); } } interface TickleAction{ void doTickleSamthing(); } class CatActionImpl implements TickleAction{ @Override public void doTickleSamthing() { System.out.println("猫开始挠人"); } }
调用:
public static void doSomthing(BiteAction bite){ System.out.println("正在发生"); bite.doBiteSamthing(); System.out.println("结束发生"); }
TickleAction action = new CatActionImpl(); Adapter adapter = new Adapter(action); doSomthing(adapter);
2、抽象类
abstract class AnimalAction{ public void doBiteSamthing(){} public void doTickleSamthing(){} } class Animal extends AnimalAction{ @Override public void doTickleSamthing() { // super.doTickleSamthing(); System.out.println("猫开始挠人"); } }