工厂模式可以分为三类:简单工厂模式,工厂方法模式以及抽象工厂模式。
简单工厂模式又称为静态工厂方法模式,为何称为静态工厂方法模式呢?是因为该模式主要由一个工厂类的静态方法来提供各种产品。
这里假设有三个角色:消费者,生产者和产品。通过简单工厂模式消费者并不需要关心产品是如何生产出来的,也不需要关心产品制造的具体流程,只需要直接去生产者那里直接购买便可。这在一定程度上实现了生产者和产品之间的解耦,每个角色之间的分工变得更加明确。
public interface Phone {
//产品类所继承的公共接口,也可以为抽象类
public String getPhoneName();
}
/**
* 苹果生产商
*/
public class IPhone implements Phone {
@Override
public String getPhoneName() {
return "我们生产苹果手机";
}
}
/**
* vivo生产商
*/
public class VivoPhone implements Phone {
@Override
public String getPhoneName() {
return "我们生产vivo手机";
}
}
/**
* 华为生产商
*/
public class HuaWeiPhone implements Phone {
@Override
public String getPhoneName() {
return "我们生产华为手机";
}
}
/**
* 工厂负责生产各种手机,这里的生产可以理解为对象的创建
*/
public class Factory {
//苹果手机
private static final String APPLE = "apple";
//vivo手机
private static final String VIVO = "vivo";
//华为手机
private static final String HUAWEI = "huawei";
//根据用户的选择来提供手机
public static Phone create(String name)
{
switch (name)
{
case APPLE:
return new IPhone();
case VIVO:
return new VivoPhone();
case HUAWEI:
return new HuaWeiPhone();
default:
return null;
}
}
}
/**
* 消费者
*/
public class Customer {
public static void main(String[] args)
{
//用户买个苹果手机
Phone phone = Factory.create("apple");
System.out.println(phone.getPhoneName());
//用户买个华为手机
Phone phone2 = Factory.create("huawei");
System.out.println(phone2.getPhoneName());
}
}