package com.factory;
/**
* 工厂模式
*/
public class FactoryModelDemo {
public static void main(String[] args) {
ProductFactory productFactory = new ProductFactory();
Product product = productFactory.createProduct("bus");
System.out.println(product);
}
}
class Product {
private String productNo;
private String msg;
public Product() {
super();
}
public Product(String productNo, String msg) {
super();
this.productNo = productNo;
this.msg = msg;
}
public String getProductNo() {
return productNo;
}
public void setProductNo(String productNo) {
this.productNo = productNo;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
@Override
public String toString() {
return "Product [productNo=" + productNo + ", msg=" + msg + "]";
}
}
/**
* 抽象工厂
*/
interface IProductFactory {
Product createProduct(String productNo);
}
/**
* car factory---具体工厂
*/
class ProductFactoryCar implements IProductFactory {
@Override
public Product createProduct(String productNo) {
Product product = new Product(productNo, "buy a car");
return product;
}
}
/**
* bus factory---具体工厂
*/
class ProductFactoryBus implements IProductFactory {
@Override
public Product createProduct(String productNo) {
Product product = new Product(productNo, "buy a bus");
return product;
}
}
/**
* truck factory---具体工厂
*/
class ProductFactoryTruck implements IProductFactory {
@Override
public Product createProduct(String productNo) {
Product product = new Product(productNo, "buy a truck");
return product;
}
}
/**
* 抽象工厂
*/
class ProductFactory implements IProductFactory {
@Override
public Product createProduct(String productNo) {
IProductFactory productFactory = null;
switch (productNo) {
case "car":
productFactory = new ProductFactoryCar();
break;
case "bus":
productFactory = new ProductFactoryBus();
break;
case "truck":
productFactory = new ProductFactoryTruck();
break;
}
if (null != productFactory) {
return productFactory.createProduct(productNo);
}
return null;
}
}