场景引入:某同学去商城买电脑,有两款特别喜欢,一款MacBook Pro,另一款Surface pro.
类图
创建 Computer 接口
interface Computer {
void printComputer();
}
创建 Client.java
通过类实现接口(需重写printComputer()方法)
class MacbookProComputer implements Computer{
@Override
public void printComputer() {
System.out.println("MacbookProComputer");
}
}
class SurfaceBookComputer implements Computer{
@Override
public void printComputer() {
System.out.println("SurfacebookComputer");
}
}
客户端
public class Client {
public void buyComputer(Computer computer){
computer.printComputer();
}
public static void main(String[] args) {
Client client = new Client();
client.buyComputer(new MacbookProComputer());
client.buyComputer(new SurfaceBookComputer());
}
}
运行结果:
我们可以看出,此代码存在缺陷,如果某同学又看上一款电脑,就不得不返回客户端修改代码。
所以需要对代码优化:即实例化具体类从客户端中分离出来。