产品公司按照客户需求,生产a,b,c三类产品
产品a属性是辣的,产品b属性是甜的,产品c属性酸的
口味属于产品的共有属性
//口味的相关接口 public interface ProductFlavor { void flavor(); }
抽象工厂
//抽象工厂 抽象方法由具体工厂实现 public abstract class ProductFactory { // public abstract <T extends Product> T createProduct(Class<T> cls); public abstract ProductFlavor createFlavor(); }
具体工厂,分为3个具体工厂,继承抽象工厂,重写抽象方法
工厂A生产的口味是辣的
public class ProductAFactory extends ProductFactory { @Override public ProductFlavor createFlavor() { return new Hot(); } }
工厂B生产的口味是甜的
public class ProductBFactory extends ProductFactory { @Override public ProductFlavor createFlavor() { return new Sweet(); } }
工厂C生产的口味是酸的
public class ProductCFactory extends ProductFactory { @Override public ProductFlavor createFlavor() { return new Sour(); } }
具体口味类
A产品的口味类
public class Hot implements ProductFlavor { @Override public void flavor() { Log.d("product","A flavor hot"); } }
B产品的口味类
public class Sweet implements ProductFlavor { @Override public void flavor() { Log.d("product","b flavor sweet"); } }
C产品的口味类
public class Sour implements ProductFlavor { @Override public void flavor() { Log.d("product","c flavor sour"); } }
个个工厂开始生产各种口味产品
ProductFactory a = new ProductAFactory(); ProductFactory b = new ProductBFactory(); ProductFactory c = new ProductCFactory(); a.createFlavor().flavor(); b.createFlavor().flavor(); c.createFlavor().flavor();