上篇说道java的简单工厂模式,随着业务的复杂和需求的变化,简单的工厂模式已经不能满足我们的需求。
工厂方法模式就是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。例如上一篇的例子中调用者既不输入man也不输入women或者传递的字符串出错就不能正确的创建对象。而多个工厂方法模式是提供多个工厂方法,分别创建对象。将对象的创建交由父类中定义的一个标准方法来完成,而不是其构造函数,究竟应该创建何种对象由具体的子类负责决定。
将之前的代码稍作修改,创建一个human接口。
创建男人女人对human工厂的实现
测试
输出
总结:工厂方法模式是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。
抽象工厂模式
抽象工厂模式可以说是简单工厂模式的扩展,它们主要的区别在于需要创建对象的复杂程度上。
定义吃饭接口:
定义具体的产品类的实现:
定义好抽象的工厂接口:
定义具体的工厂生产类,具体的实力返回
测试:
输出:
总结:抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。 一般常常使用于一套程序,需要多套实现的场景之下。