标签:
需求一:普通门
版本1.0
abstract class Door { public abstract void open(); public abstract void close(); } class NormalDoor extends Door { @Override public void open() {} @Override public void close() {} }
版本2.0
abstract interface Door { public abstract void open(); public abstract void close(); } class NormalDoor implements Door { public void open() {} public void close() {} }
需求二:报警门
版本1.0
abstract class Door { public abstract void open(); public abstract void close(); public abstract void alarm(); } class NormalDoor extends Door { @Override public void open() {} @Override public void close() {} @Override public void alarm() {} }
版本2.0
abstract interface Door { public abstract void open(); public abstract void close(); public abstract void alarm(); } class NormalDoor implements Door { public void open() {} public void close() {} public void alarm() {} }
版本3.0
abstract class Door { public abstract void open(); public abstract void close(); } abstract interface Alarm{ public abstract void alarm(); } class NormalDoor extends Door implements Alarm { @Override public void open() {} @Override public void close() {} public void alarm() {} }
点评:
普通门中,版本1.0 如果添加一个非抽象方法,则子类自动具有,不需要改代码(优势)
报警门中,版本1.0 所有子类,都要实现报警,但好多门是不需要报警的(劣势)
报警们中,版本2.0 因为接口添加了一个报警功能,使得所有用到该接口的都得改代码,不然编译不通过。(劣势)
报警们中,版本3.0 合适得处理方式
接口是对行为的抽象,普通门2.0 和 报警门2.0 都不合适。
抽象类是对对象的抽象,所以普通门1.0 合适。
标签:
原文地址:http://www.cnblogs.com/zno2/p/4571523.html