工厂模式属于创建型模式
它提供了一种基于"输入"的创建对象方式。
应用场景
超类存在多个子类时创建对象,
创建过程比较复杂的对象,适合使用工厂模式,
过程简单,不需要使用工厂模式。
实例
动物类
package com.superv.supervresource.design.factory;
/**
* @author yangwei
* @describition 动物
*
* @time 2020年10月26日-下午7:10:32
*/
public interface Animal {
void eat ();
}
小羊类
package com.superv.supervresource.design.factory;
/**
* @author yangwei
* @describition 羊
*
* @time 2020年10月26日-下午7:13:45
*/
public class Sheep implements Animal {
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("小羊吃草。");
}
}
小猫类
package com.superv.supervresource.design.factory;
/**
* @author yangwei
* @describition 猫
*
* @time 2020年10月26日-下午7:12:45
*/
public class Cat implements Animal {
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("小猫吃鱼。");
}
}
工厂类
package com.superv.supervresource.design.factory;
/**
* @author yangwei
* @describition 动物工厂
*
* @time 2020年10月26日-下午7:14:13
*/
public class AnimalFactory {
public static Animal getAnimal (String animalType) {
if ("sheep".equals(animalType)) {
return new Sheep();
}
if ("cat".equals(animalType)) {
return new Cat();
}
return null;
}
}
工厂测试类
package com.superv.supervresource.design.factory;
/**
* @author yangwei
* @describition 工厂测试类
*
* @time 2020年10月26日-下午7:16:34
*/
public class AnimalFactoryTest {
public static void main(String[] args) {
Animal sheep = AnimalFactory.getAnimal("sheep");
sheep.eat();
Animal cat = AnimalFactory.getAnimal("cat");
cat.eat();
}
}
运行结果
不当之处,请予指正。