package com.xjh.demo.designpattern.pattern1;
public abstract class Animal {
public abstract void eat();
}
package com.xjh.demo.designpattern.pattern1;
public class Dog extends Animal{
public void eat() {
System.out.println("dog eat meat!!");
}
}
package com.xjh.demo.designpattern.pattern1;
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("cat eat fish!! ");
}
}
package com.xjh.demo.designpattern.pattern1;
public class AnimalFactory {
private AnimalFactory(){
}
public static Animal createAnimal(String type){
if("dog".equals(type)){
return new Dog();
}else if("cat".equals(type)){
return new Cat();
}else{
return null;
}
}
}
package com.xjh.demo.designpattern.pattern1;
public class AnimalTest {
public static void main(String[] args) {
Animal animal = AnimalFactory.createAnimal("dog");
animal.eat();
animal = AnimalFactory.createAnimal("cat");
animal.eat();
}
}
模式定义
简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
模式结构
简单工厂模式包含如下角色:
Factory:工厂角色
Product:抽象产品角色
ConcreteProduct:具体产品角色
简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。
简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。