简单工厂模式
in inbox with 0 comment

简单工厂模式

in inbox with 0 comment

简单工厂模式

设计模式

正在处理

介绍

简单工厂模式虽然不在GOF的23中设计模式中,却被广泛的应用。简单工厂模式的最大的优点是除去了客户端对于具体产品的依赖,因为工厂类中包含了需要的逻辑判断。虽然简单工厂模式违反了开闭原则,但是保持了封装对象创建的优点。

简单工厂模式模式是由一个工厂对象决定创建出哪一种产品类的实例。可以理解为不同工厂模式的一个特殊实现。

代码实现

面包师和面包类

//面包师的代码,作为父类
public class BreadMaker{

    public void GetBread(){

        //Nothing to do;
    }
}
//黑面包代码
public class BlackBread{

    //覆盖父类抽象方法
    public void GetBread(){

        System.out.println("烤出了黑面包");
    }
}
//蜂蜜面包的代码

public class HoneyBread{

    //覆盖父类抽象方法
    public void GetBread(){

        System.out.println("烤出了蜂蜜面包");
    }
}

面包工厂代码

//工厂
public class BreadFactory{

    public static BreadMaker MakeBread(int breadType){

        BreadMaker beradMaker = null;
        //选择面包的类型
        switch(breadType){

            case 1:
                beradMaker = new BlackBread();
                break;
            case 2:
                BreadMaker = new HoneyBread();
                break;
            default:
                break;

        }
        return beradMaker;
    }

}

客户端代码

//客户端代码
public static void main(String[] args){

    BreadMaker beradMaker;
    System.out.println("面包店要开业了");
    System.out.println("顾客要黑面包");
    beradMaker = BreadFactory.MakeBread(1);
    System.out.println("顾客要蜂蜜面包");
    beradMaker = BreadFactory.MakeBread(2);
}

简单工厂模式存在的问题

不符合开闭原则
如果增加一种新面包的话,需要增加一个新的面包类,同时也要修改简单工厂类,增加Case分支,很明显对外拓展的同时,对外修改也开放了。
而解决这个问题的办法就是—工厂方法

Responses