创建模式之简单工厂模式

设计模式总的来说分为三大类:

(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

(3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

本文就简单工厂模式进行讲解:

抽象工厂模式是对简单工厂模式的改进,在学习抽象工厂模式之前我们都需要要理解简单工厂模式是什么,有哪些弊端,是怎样进行改进的。

简单工厂模式又称静态工厂方法,在实际使用时,专门定义一个类来负责创建其他类的实例,根据输入参数不同返回不同的实例。

比如现在有一个工厂在生产电脑,可以生产戴尔,联想两种电脑,我们在向工厂拿货时不必知道具体怎么生产,直接给工厂传一个参数,比如戴尔或者联想,这样工厂就自己给我们生产出来了,

代码如下,该代码出自:参考链接

首先创建一个抽象接口类:

package factory;
/**
 * 抽象接口
 * @author wf
 */
public interface Computer {
    void creatComputer();
}

然后创建具体产品类:

1,戴尔电脑:

package factory;

/**
 * Dell电脑
 * @author wf
 */
public class DellComputer implements Computer {
    @Override
    public void creatComputer() {
        System.out.println("Create a dell computer...");
    }
}

二,联想电脑

package factory;

/**
 * Lenovo电脑
 * @author wf
 */
public class LenovoComputer implements Computer {
    @Override
    public void creatComputer() {
        System.out.println("CreateFactory a lenovo computer...");
    }
}

三,创建工厂角色

package factory;

/**
 * 根据传进来的参数的产品类型来 生产/创建 真实的产品实体对象
 * @author wf
 */
public class CreateFactory {
    public static Computer createComputer(String type) {
        if(type.equals("dellcomputer"))
            return new DellComputer();
        else if (type.equals("haseecomputer"))
            return new HaseeComputer();
        else if(type.equals("lenovocomputer"))
            return new LenovoComputer();
        else System.out.println("no "+type +" computer");
        return null;
    }
}

四,调用代码创建产品:

package factory;

public class Client {
    public static void main(String[] args)
    {
        Computer computer = CreateFactory.createComputer("haseecomputer");
        computer.creatComputer();
    }
}

可以看到,在第三部分代码中,我们根据传进来的参数来判断需要调用哪个类来创建合适的电脑。

但是此方法有很大的弊端

比如我们现在有了更多种类的电脑需要生产,我们不仅要重新写一个新的类来创建该牌子电脑,并且在第三部分中也需要修改之前的代码,并不符合程序设计的开闭原则。并且如果我们在实际的使用过程中,假如需要增加的电脑种类数量庞大,那么工作量也会特别大。

猜你喜欢

转载自www.cnblogs.com/swpudengyuheng/p/12588393.html
今日推荐