定义
简单工厂模式又称为静态工厂模式,简单工厂模式的作用就是创建一个工厂类用来创建其它类的实例,至于类是怎么样创建的对用户来说是不可见的「屏蔽细节」
说明:
它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
模式结构
简单工厂模式包含如下角色:
Factory:工厂角色
Product:抽象产品角色
ConcreteProduct:具体产品角色a
简单工厂模式的优点
1实现创建和使用分离;
2 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数
简单工厂模式的缺点:
简单工厂模式的缺点
1工厂静态方法无法继承
2 违反开闭原则「对扩展开放,对修改关闭」,如果有一个新的对象要添加,那么就要修改工厂
3 代码维护不容易,如果想要创建更多的具体实现的对象,需要大量修改工厂
简单工厂模式适用情况包括:工厂类负责创建的对象比较少;客户端只知道传入工厂类的参数,对于如何创建对象不关心。
代码实现:
1 抽象类
//定义抽象产品果汁接口 IJuice.java
public interface IJuice {
String getName() ;
//也可以声明一些其它的业务方法
}
2 实现类
//一个具体的产品--- 苹果汁
public class AppleJuice implements IJuice {
public static final String TAG = "AppleJuice" ;
@Override
public String getName() {
Log.e(TAG,"我是苹果汁") ;
return "我是苹果汁";
}
}
3 实现类
//具体的产品桔子汁
public class OrangeJuice implements IJuice {
public static final String TAG = "OrangeJuice" ;
@Override
public String getName() {
Log.e(TAG,"我是桔子汁") ;
return "我是桔子汁";
}
}
4 工厂类
/**
* @Description 果汁机---工厂
* @Creator junjun(创建者)
*/
public class JuiceFactory {
/**
* 根据名称来生产不同的果汁
* @param name
* @return
*/
public static IJuice createJuice(String name){
IJuice iJuice = null;
if(name.equals("apple")){
//苹果汁
iJuice = new AppleJuice() ;
}else if(name.equals("orange")){
//桔子汁
iJuice = new OrangeJuice() ;
}
return iJuice ;
}
}
5客户端
public class FactoryTest {
public static void main(String[] args) {
JuiceFactory factory = new JuiceFactory();
sender = factory.createJuice("apple");
}
}
参考文档: