简单工厂模式
简单工厂模式属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,不属于GoF 23种设计模式之一。
简单工厂模式角色: 抽象产品类、具体产品类、工厂类
在简单工厂模式中将对象的创建与使用职责分离了开来,客户端不再负责对象的创建,而是将这个责任丢给了具体的工厂类,客户端只负责对象的调用,从而明确各个类的职责。符合单一职责原则。
uml类图
简单工厂模式代码实现
- 抽象产品类
package CreatePatterns.SimpleFactoryPattern.Animal;
public abstract class Animal {
abstract void action();//动作
abstract void eat();//动物进食
}
- 具体产品类
package CreatePatterns.SimpleFactoryPattern.Animal;
/*
* 老虎
*/
public class Tiger extends Animal{
public void action(){
System.out.println("老虎running");
}
public void eat() {
System.out.println("老虎吃肉");
}
}
/*
* 鹦鹉
*/
public class Parrot extends Animal{
public void action(){
System.out.println("鹦鹉Flying");
}
public void eat(){
System.out.println("鹦鹉吃虫子");
}
}
/*
* 海豚
*/
public class Dolphin extends Animal{
public void action(){
System.out.println("海豚swing");
}
public void eat(){
System.out.println("海豚吃鱼");
}
}
- 工厂类
package CreatePatterns.SimpleFactoryPattern.Animal;
public class SimpleFactory {
//根据参数创建对象
public static Animal createProduct(String productName){
if("Tiger".equals(productName)){
return new Tiger();
}else if("Dolphin".equals(productName)){
return new Dolphin();
}else if("Parrot".equals(productName)){
return new Parrot();
}
return null;
}
}
客户端
package CreatePatterns.SimpleFactoryPattern.Animal;
/*
*客户端
*/
public class Client {
public static void main(String[] args){
Animal tiger = SimpleFactory.createProduct("Tiger");
tiger.action();
Animal dolphin = SimpleFactory.createProduct("Dolphin");
dolphin.action();
Animal parrot = SimpleFactory.createProduct("Parrot");
parrot.action();
}
}
运行结果