1.介绍
工厂模式属于创建型的设计模式,通过对对象创建过程的封装与屏蔽且暴露一个统一的对外接口,当内部行为发生改变的时对外部的影响较小。例如在Hibernate 换数据库只需换方言和驱动就可以实现数据库支持的切换,Java的Iterator等都是通过工厂模式实现的。工厂模式分为简单工厂模式和抽象工厂模式,本文主要介绍简单工厂模式。
2. 简单工厂模式类图
3. 代码实现
/**
* @author houkai
* 创建对象时不会对客户端暴露创建逻辑,并且是
* 通过使用一个共同的接口来指向新创建的对象
*/
public class FactoryPatternDemo {
public static void main(String[] args) {
Animal dog = AnimalFactory.getAnimal("dog");
dog.breed();
Animal cat = AnimalFactory.getAnimal("cat");
cat.breed();
AnimalFactory.getAnimal("错误");
}
}
/**
* @author houkai
* 简单工厂,根据动物名称生产具体的动物
*/
public class AnimalFactory {
public static Animal getAnimal(String name){
Animal animal = null;
switch(name){
case "dog":
animal = new Dog();
break;
case "cat":
animal = new Cat();
break;
default:
throw new RuntimeException("输入有误!");
}
return animal;
}
}
/**
* @author houkai
*/
public interface Animal {
void breed();
}
/**
* @author houkai
*/
public class Cat implements Animal{
@Override
public void breed() {
System.out.println("----cat---");
}
}
/**
* @author houkai
*/
public class Dog implements Animal {
@Override
public void breed() {
System.out.println("--- dog ---");
}
}