当前位置:首页 >  每日行情  > 正文

设计模式第一发:工厂方法模式

时间:2023-03-07 00:02:40     来源:程序员CBA

首先来看下工厂方法模式的优点:

可以有效地解耦代码。将对象的创建从应用程序代码中分离出来,将其移到工厂类中,这样就可以避免高层模块直接依赖具体产品类,从而使得系统更加灵活、可扩展和可维护。

符合开放封闭原则。当需要增加新的产品时,只需要增加相应的具体产品类和对应的工厂类,而不需要修改现有的代码,这样就可以避免对现有代码的破坏,提高代码的可维护性和可扩展性。


(资料图片仅供参考)

工厂方法模式可以降低代码的耦合度。由于工厂方法模式可以将产品类的创建和使用分离开来,因此可以降低代码的耦合度,提高代码的可读性和可维护性。

工厂方法模式可以提高代码的复用性。由于产品的创建和使用被分离开来,因此可以方便地将同样的创建过程应用到不同的场景中。

工厂方法模式可以方便地进行单元测试。由于产品的创建和使用被分离开来,因此可以方便地进行单元测试,从而提高代码的质量和可靠性。

下面是一个使用Java语言编码实现工厂方法模式的示例:

//创建一个抽象产品接口

interface Product {

void printInfo();

}

//创建具体产品类

class ProductA implements Product {

@Override

public void printInfo(){

System.out.println("Product A");

}}

class ProductB implements Product {

@Override

public void printInfo(){

System.out.println("Product B");

}}

//创建工厂接口

interface Factory {

Product createProduct();

}

//创建具体工厂类

class FactoryA implements Factory {

@Override

public Product createProduct(){

return new ProductA();

}}

class FactoryB implements Factory {

@Override

public Product createProduct(){

return new ProductB();

}}

//使用工厂方法模式创建对象

public class Main {

public static void main(String[] args){

Factory factoryA = new FactoryA();

Product productA = factoryA.createProduct();

productA.printInfo();

Factory factoryB = new FactoryB();

Product productB = factoryB.createProduct();

productB.printInfo();

}}

在这个示例中,我们首先定义了一个抽象产品接口Product和两个具体产品类ProductA和ProductB。然后定义了一个工厂接口Factory和两个具体工厂类FactoryA和FactoryB,每个具体工厂类分别负责创建自己对应的产品。最后在Main类中使用不同的具体工厂来创建产品,并调用产品的printInfo()方法打印出产品信息。

这里的关键是工厂方法模式中的抽象工厂接口和具体工厂类。通过定义抽象工厂接口,我们可以让不同的具体工厂类来实现这个接口,从而创建不同的产品。这样就可以将对象的创建过程封装在工厂中,从而实现对象的创建和使用的分离。

标签: 设计模式