目录
工厂模式
定义一个创建对象的接口,子类实现该接口(可多个),提供一个工厂方法用于创建。
例如:我们要设计一个动物工厂,根据自己的要求获取对应的类,如dog、cat。
创建一个动物工厂接口
package com.ispeasant.java.designpattern.factorypattern;
/**
* 工厂模式接口-动物
*/
public interface FactoryPatternIntAnimal {
void speak();
}
创建两个动物实现类
package com.ispeasant.java.designpattern.factorypattern;
/**
* 实现接口-猫
*/
public class FactoryPatternImpCat implements FactoryPatternIntAnimal {
// 重写方法
@Override
public void speak() {
System.out.println("喵喵。。。");
}
}
package com.ispeasant.java.designpattern.factorypattern;
/**
* 实现接口-狗
*/
public class FactoryPatternImpDog implements FactoryPatternIntAnimal {
// 重写方法
@Override
public void speak() {
System.out.println("汪汪。。。");
}
}
创建一个动物工厂类
package com.ispeasant.java.designpattern.factorypattern;
/**
* 创建一个工厂类-动物工厂
*/
public class AnimalFactory {
/**
* 定义一个获取类型方法,用接口做返回类型
*
* @param animalType
* @return
*/
public FactoryPatternIntAnimal getAnimal(String animalType) {
if (animalType == null) {
return null;
} else if (animalType.equals("dog")) {
return new FactoryPatternImpDog();
} else if (animalType.equals("cat")) {
return new FactoryPatternImpCat();
} else {
return null;
}
}
}
测试效果
package com.ispeasant.java.designpattern.factorypattern;
/**
* 测试工厂模式
*/
public class TestAnimalFactory {
public static void main(String[] args) {
// 先创建一个工厂
AnimalFactory animalFactory = new AnimalFactory();
// 获取dog类
FactoryPatternIntAnimal dog = animalFactory.getAnimal("dog");
dog.speak();
// 获取cat类
FactoryPatternIntAnimal cat = animalFactory.getAnimal("cat");
cat.speak();
}
}
结果:
如果需要源码,可关注本人公众号,回复“2020073101”进行获取。
只要自己有时间,都尽量写写文章,与大家交流分享。
本人公众号:
CSDN博客地址:https://blog.csdn.net/ispeasant