转发Java设计当中的工厂设计模式
Posted mt888888
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转发Java设计当中的工厂设计模式相关的知识,希望对你有一定的参考价值。
工厂模式:主要用于实例化具有公共接口的类。工厂模式可以动态确定哪个类应该被实例化。
工厂模型的形式
工厂模型主要使用以下几种形式之一:
1:简单工厂(Simple Factory)。
2:工厂法(Factory Method)。
3:抽象工厂(抽象工厂)。
简易工厂(简易工厂)
也叫静态工厂,是工厂模式3状态下最简单的结构。主要有一个静态方法,用来接受参数,根据参数决定返回实现相同1接口的不同类的实例。让我们看一个具体的例子:
假设一个工厂生产洗衣机、冰箱、空调等等.
我们首先为所有产品定义一个通用的产品界面
公共界面产品{}
然后我们让这个工厂的所有产品都必须实现这个接口
公共类洗衣机实现产品{
公共洗衣机(){
System.out.println(‘洗衣机制造‘);
{}
{}
公共类Impox实现产品{
public Impox(){
System.out.println(‘冰箱制造‘);
{}
{}
公共级空调实施产品{
public Impox(){
System.out.println(‘空调制造‘);
{}
{}
接下来,我们将编写一个工厂类,负责生产上述产品
公共类SimpleFactory {
公共静态产品工厂(字符串产品名称)引发异常{
if(ProductName . equals(‘ Washer ‘)){
退回新垫圈();
} else if(ProductName . equals(‘ Impox ‘){
return new Impox();} else if(ProductName . equals(‘ AirCondition ‘){
返回新空调();
}else{
抛出新的Exception(‘没有这样的产品‘);
{}
{}
{}
好了,有了这个工厂类,我们就可以开始下单了,SimpleFactory会根据不同的订单类来决定生产什么产品。
公共静态void main(String[] args) {
尝试{
simpleFactory . Factory(‘ Washer ‘);
simple factory . factory(‘ Impox ‘);
SimpleFactory.factory(‘空调‘);
}捕获(例外e) {
e . printstacktrace();
{}
{}
从上面的代码可以看出,一个SimpleFactory的核心是一个SimpleFactory类,它具有必要的逻辑判断能力和创建所有产品的权利。我们只需要给他订单就能得到我们想要的产品。这个好像用起来很方便。
然而,事实上,这个简单工厂有许多限制。首先,每次我们要添加一个新的产品,都要修改SimpleFactory的原始代码。其次,当我们的产品很多,产品之间存在复杂的层次关系时,这个类必然具有复杂的逻辑判断能力,其代码量会持续激增,对于未来的保护简直是吓人。
此外,所有系统都严重依赖SimpleFactory类。只要SimpleFactory类1出了问题,系统就会进入无法工作的状态,这也是最致命的一点.
上述缺点将在工厂模式的另外两种状态下得到解决。
工厂方法(工厂方法)
上面的代码告诉我们,简单的工厂并不简单,它是所有模型的核心。一旦出了问题,所有的模型都会受到影响,无法工作。为了降低风险,为未来的保护和扩展做准备,我们需要对其进行改造,并引入工厂方法。工厂方法为工厂类定义了接口,用多态来削弱了工厂类的职能,以下是工厂接口的定义:
公共接口工厂{
public Product create();
{}
我们再来定义1个产品接口
公共界面产品{}
1下是实现了产品接口的产品类
公共类洗衣机实现产品{
公共洗衣机({
System.out.println(‘洗衣机被制造了);
{}
{}
公共类Impox实现产品{
public Impox(){
System.out.println(‘冰箱被制造了);
{}
{}
公共级空调实施产品{
public Impox(){
System.out.println(‘空调被制造了);
{}
{}
接下来,就是工厂方法的核心部份,也就是具体创建产品对象的具体工厂类,
//创建洗衣机的工厂
公共类创建洗衣机实现工厂{
公共产品创建({
退回新垫圈();
{}
{}
//创建冰箱的工厂
公共类创建冰箱实现工厂{
公共产品创建({
返回new Impox();
{}
以上是关于转发Java设计当中的工厂设计模式的主要内容,如果未能解决你的问题,请参考以下文章