23种设计模式之工厂方法模式
模式结构
- 抽象工厂(Abstract Factory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
- 具体工厂(ConcreteFactory):主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
- 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。
- 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。
案例
public interface Phone {
void playGames();
void sendMessage();
}
public class Apple implements Phone{
@Override
public void playGames() {
System.out.println("Apple playGames");
}
@Override
public void sendMessage() {
}
}
public class Android implements Phone{
@Override
public void playGames() {
System.out.println("Android playGames");
}
@Override
public void sendMessage() {
}
}
public interface FactoryMethod {
Phone producePhone();
}
public class AppleFactoryMethod implements FactoryMethod{
@Override
public Phone producePhone() {
return new Apple();
}
}
public class AndroidFactoryMethod implements FactoryMethod{
@Override
public Phone producePhone() {
return new Android();
}
}
public class FactoryMethodTest {
public static void main(String[] args) {
FactoryMethod appFactoryMethod = new AppleFactoryMethod();
Phone apple = appFactoryMethod.producePhone();
apple.playGames();
FactoryMethod androidFactoryMethod = new AndroidFactoryMethod();
Phone android = androidFactoryMethod.producePhone();
android.playGames();
}
}