Appearance
Java 面向对象基础
本教程代码假定读者已了解 Java 语法,这里只强调与设计模式强相关的 OO 要点。
接口与抽象类
接口 interface | 抽象类 abstract class | |
|---|---|---|
| 多继承 | 可多实现 | 单继承 |
| 状态 | JDK 8+ 可有 default/static 方法 | 可有字段与具体方法 |
| 典型用途 | 能力契约、策略/适配目标 | 模板方法骨架、共享实现 |
模式里常见:面向接口编程(依赖倒置),实现类可替换。
组合优于继承
继承暴露父类细节,子类与父类强耦合。模式里更常用持有引用(组合):
java
// 组合:行为委托给成员
public class Service {
private final Repository repo;
public Service(Repository repo) { this.repo = repo; }
}可见性与不可变
- 构造器
private:单例、控制创建。 final字段:建造者、配置对象。- 包级或
protected:子类/同包协作(模板方法)。
函数式接口(JDK 8+)
@FunctionalInterface 让「一个抽象方法的接口」可用 Lambda,与策略、命令等模式在 Java 里写法更简洁:
java
Runnable cmd = () -> System.out.println("run");