抽象出对象的变化部分,其具体行为延迟到子类去实现。
package com.depthmind.designpattern;
import java.util.Calendar;
public class FactoryMethodPattern {
public static void main(String[] args) {
Application application = new CreateProductA();
Product product = application.getProduct();
product.method();
Application application1 = new CreateProductB();
Product product1 = application1.getProduct();
product1.method();
}
}
interface Product {
void method();
}
class ProductA implements Product {
@Override
public void method() {
System.out.println("Create ProductA!!!");
}
}
class ProductB implements Product {
@Override
public void method() {
System.out.println("Create ProductB!!!!");
}
}
abstract class Application {
abstract Product createProduct();
public Product getProduct() {
return createProduct();
}
}
class CreateProductA extends Application {
@Override
Product createProduct() {
return new ProductA();
}
}
class CreateProductB extends Application {
@Override
Product createProduct() {
return new ProductB();
}
}