工厂方法模式是针对每个产品提供一个工厂类,在客户端中判断使用哪个工厂类去创建对象。 我们将之前的 ComputerFactory 抽象成一个接口,那么创建相应具体的工厂类去实现该接口的方法。 具体类图的实现:
1. 一个抽象产品类
2. 多个具体产品类
3. 一个抽象工厂
4. 多个具体工厂 - ---每一种具体产品对应 一个具体工厂
interface Computer{
public void printComputer();
}
class MacbookProComputer implements Computer{
public void printComputer(){
System.out.println("this is a mac");
}
}
class SurfaceBookComputer implements Computer{
public void printComputer(){
System.out.println("this is a Surface");
}
}
interface ComputerFactory{
public Computer createComputer();
}
class MCFactory implements ComputerFactory{
public Computer createComputer(){
return new MacbookProComputer();
}
}
class SurfFactory implements ComputerFactory{
public Computer createComputer(){
return new SurfaceBookComputer();
}
}
class Client{
public void buyComputer(Computer computer) {
computer.printComputer();
}
}
public class mytest{
public static void main(String[]args){
Client c=new Client();
// ComputerFactory factory = new MCFactory();
ComputerFactory factory = new SurfFactory();
Computer computer=factory.createComputer();
c.buyComputer(computer);
}
}