一、基本模式
1. 抽象工厂,具体工厂,抽象产品,具体产品作为其要素;
2. 具体工厂生产出具有【抽象产品】协议方法的产品
3. 生产出的具体产品细节对使用者透明,使用者只需知道抽象产品的协议即可。
4. 使用时: AbstractProduct aProduct = concreteFactory.createProduct; aProduct.doSth();
二、模式演化
1. 抽象xx不一定要用抽象类,用接口或Protocol也可
2. 产品创建方法可有多个, 如 createEatableProduct + createPlayabelProduct + createSoulmateProduct 对应不同的抽象产品
3. 有则复用, 无则生产, 与享元模式形成组合模式
三、 模式退化
抽象产品的多态性作为必要的适用条件,当只有一类具体产品时,失去多态在存在意义