美文网首页
15.工厂方法模式

15.工厂方法模式

作者: 0x70e8 | 来源:发表于2018-08-14 20:38 被阅读0次

    在模板方法模式中,在父类(抽象类)中定义流程,将具体实现交由子类实现,如果将模板方法模式用于生成实例对象,那么模板方法模式就衍生为工厂方法模式。

    父类决定实例生成的方式,但是不决定实例的类型,具体的实现交给子类实现。

    示例

    • 工厂类
    public abstract class AbstractFactory {
    
        public AbstractProduct createInstance() {
            AbstractProduct instance = create();
            doSomeThing(instance);
            return create();
        }
    
        protected abstract AbstractProduct create();
    
        protected abstract void doSomeThing(AbstractProduct instance);
    }
    
    
    • 抽象产品类
    public abstract class AbstractProduct {
    
        public abstract void use();
    }
    
    • 工厂实现类
    public class CardFactory extends AbstractFactory {
    
        @Override
        protected AbstractProduct create() {
    
            return new Card();
        }
    
        @Override
        protected void doSomeThing(AbstractProduct instance) {
            System.out.println("nothing");
        }
    
    }
    
    • 具体产品类
    public class Card extends AbstractProduct {
    
        @Override
        public void use() {
            System.out.println("use product card");
    
        }
    
    }
    
    
    • Client
    public class Client {
    
        public static void main(String[] args) {
            AbstractFactory factory = new CardFactory();
            AbstractProduct card = factory.createInstance();
            card.use();
        }
    }
    

    总结

    此模式是模板方法模式的应用。

    相关文章

      网友评论

          本文标题:15.工厂方法模式

          本文链接:https://www.haomeiwen.com/subject/zflbbftx.html