Rumah > Java > javaTutorial > teks badan

设计模式之简单工厂

巴扎黑
Lepaskan: 2017-06-26 09:42:42
asal
1399 orang telah melayarinya

      设计模式既上一篇关于单例模式后,终于要接着写下去了,先来个最简单的,简单工厂模式,这个设计模式很简单,也是最常用的(是不是好多东西都这样,越简单,门槛越低,越讨人喜欢)。

概念(原谅我无耻的抄百度百科):

      简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

     这里说的很清楚,一个工厂N多对象,这就是简单工厂的实质,具体的UML类图如下

     

 

先安利下processon这个在线的工具, 这是我的邀请链接,当然你如果需要画很多图,请花钱支持他们。

来解释下这个类图,三部分组成,一是Creator,是工厂类,二是IProduct接口,三是具体的产品A和B。

 

具体的代码如下

产品接口:

public interface IProduct {void meathod();
}
Salin selepas log masuk

具体产品:

public class ProductA implements IProduct {public void meathod() {
        System.out.printf("产品A");
    }
}
Salin selepas log masuk
public class ProductB implements IProduct {public void meathod() {
        System.out.printf("产品B");
    }
}
Salin selepas log masuk

工厂:

public class Creator {public static IProduct createProduct(String productName) {if (null == productName) {return null;
        } else if ("A".equals(productName)) {return new ProductA();
        } else if ("B".equals(productName)) {return new ProductB();
        }return null;
    }public static void main(String[] args) {
        IProduct productA = Creator.createProduct("A");
        productA.meathod();

        IProduct productB = Creator.createProduct("B");
        productB.meathod();
    }
}
Salin selepas log masuk

输出: 产品A产品B

 

具体实例:

这样简单的模式是比较常用的,拿我们的项目来说,我们做的产品采用多个合作方的各种接口,其中大部分接口都是相同的只是再具体的字段和细节不一样而已,例如去申请授信都是一些个人隐私信息,各家要的大体相同,只是个别的信息不同而已,这样就很适合工厂模式。

 

优缺点:

优点:解耦,帮助封装。

缺点:增加客户端复杂度,不利于扩展子工厂

 

其实简单工厂模式的本质就是选择实现。

这个简单的就说这和么多吧。

 

Atas ialah kandungan terperinci 设计模式之简单工厂. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan