设计模式笔记-简单工厂模式

定义

简单工厂模式又称为静态工厂模式,简单工厂模式的作用就是创建一个工厂类用来创建其它类的实例,至于类是怎么样创建的对用户来说是不可见的「屏蔽细节」

说明:

它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

 

模式结构
简单工厂模式包含如下角色:
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");  
    }  
}  

参考文档:

https://segmentfault.com/a/1190000011900365

猜你喜欢

转载自blog.csdn.net/qq_25744257/article/details/84589200