简单工厂模式又称为静态工厂模式,实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
简单工厂模式的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。因此适用于工厂类负责创建的对象比较少的情况
以手机为例,我们可以认为不同品牌,型号的的手机都属于手机这个类别,那么假设我们要得到一个具体型号的手机,就可以写成简单工厂模式来获取。
1,首先定义手机这个东西的抽象接口
//苹果手机
public abstract class Phone{
//获取手机名称
public void getName();
}
2,定义HuaWeiP30 ,Xiaomi9 ,iphoneXR 这三个具体型号的手机。
public class HuaWeiP30 implements ApplePhone{
@Override
public void getName() {
Console.WriteLine("HuaWeiP30 手机");
}
}
public class Xiaomi9 implements Phone{
@Override
public void getName() {
Console.WriteLine("小米6手机");
}
}
public class iphoneXR implements Phone{
@Override
public void getName () {
Console.WriteLine("iPhoneXR手机");
}
}
3.定义简单工厂类:
//手机工厂
public class PhoneFactory {
public static Phone createPhone(String kind){
Phone Phone = null;
switch (kind) {
case"苹果":
Phone = new iphoneXR();
break;
case"小米":
Phone = new Xiaomi9();
break;
case"华为":
Phone = new HuaWeiP30();
break;
default:
break;
}
return Phone;
}
}
通过上面模式的实现。在使用的时候就可以通过工厂类得到具体型号的手机
public class Client {
public static void main(String[] args) {
Phone applePhone = PhoneFactory.createPhone("苹果");
Phone xiaomiPhone = PhoneFactory.createPhone("小米");
}
}
来源:CSDN
作者:WannaRunning
链接:https://blog.csdn.net/qq_29569183/article/details/103462223