设计模式——简单工厂模式

岁酱吖の 提交于 2019-12-14 07:21:00

简单工厂模式又称为静态工厂模式,实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

简单工厂模式的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。因此适用于工厂类负责创建的对象比较少的情况

 

以手机为例,我们可以认为不同品牌,型号的的手机都属于手机这个类别,那么假设我们要得到一个具体型号的手机,就可以写成简单工厂模式来获取。

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("小米");
       
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!