// 用interface 定义出人的抽象模型
public interface Person_1 {
public void breathe();
public void eat();
public void sleep();
}
// 用abstract 定义出人的抽象模型
public abstract class Person_2 {
public abstract void breathe();
public abstract void eat();
public abstract void sleep();
}
// 这时我们可能还需要额外描述这个人擅长什么,比如这个人还会写代码
// 用interface 定义
public interface Person_1_1 {
public void breathe();
public void eat();
public void sleep();
public void coding();
}
// 用abstract 定义
public abstract class Person_2_1 {
public abstract void breathe();
public abstract void eat();
public abstract void sleep();
public abstract void coding();
}
// 我们知道这显然违背了 核心原则 ISP (Interface Segregation Principle)
// 而且我们知道并非所有人都会code,所有abstract并非满足is a的关系
// 重新设计一下吧
// 这是人类都会的
public abstract class Person_1_2 {
public abstract void breathe();
public abstract void eat();
public abstract void sleep();
}
// 接口的职责尽量单一,接口的public尽量少
public interface Person_2_2 {
public void coding();
}
// 好了一个会敲代码的人出现了
public class Person extends Person_1_2 implements Person_2_2 {
@Override
public void coding() {
// TODO Auto-generated method stub
}
@Override
public void breathe() {
// TODO Auto-generated method stub
}
@Override
public void eat() {
// TODO Auto-generated method stub
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
}
抽象类和接口简单设计理念
最新推荐文章于 2024-11-03 11:01:20 发布