欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 设计模式之工厂模式和策略模式实现以及区别

设计模式之工厂模式和策略模式实现以及区别

2025/10/27 16:45:43 来源:https://blog.csdn.net/a15835774652/article/details/141995453  浏览:    关键词:设计模式之工厂模式和策略模式实现以及区别

前言

在软件设计中,设计模式是解决常见问题的最佳实践。工厂模式和策略模式是两种常用的创建型和行为型设计模式,它们都提供了管理对象创建和行为变化的策略,但它们的应用场景和实现方式有所不同。本文将详细介绍工厂模式和策略模式,并探讨它们之间的区别。

工厂模式

工厂模式是一种创建型设计模式,用于处理对象的创建过程,使得对象的创建与使用分离,从而提高程序的可扩展性和可维护性。

特点

对象创建的封装

工厂模式将对象的创建逻辑封装在工厂类中,客户端无需关心对象的具体创建细节。

代码的扩展性

当需要引入新的产品类时,只需添加相应的工厂类或修改现有工厂类,无需修改客户端代码。

解耦

工厂模式实现了客户端与具体产品的解耦。

实现

定义一个产品接口 只有一个使用方法

/*** 产品接口* @author leon* @date 2024-09-07 14:41:12*/
public interface Product {void use();
}

产品A实现

/***  ConcreteProductA 类* @author leon* @date 2024-09-07 14:42:13*/
public class ConcreteProductA implements Product {@Overridepublic void use() {System.out.println("Using ConcreteProductA");}
}

产品B实现

/***  ConcreteProductB 类* @author leon* @date 2024-09-07 14:42:40*/
public class ConcreteProductB implements Product {@Overridepublic void use() {System.out.println("Using ConcreteProductB");}
}

定义工厂接口

/***  Factory 接口* @author leon* @date 2024-09-07 14:43:30*/
public interface Factory {Product createProduct();
}

工厂实现类

/***  ConcreteFactory 类* @author leon* @date 2024-09-07 14:44:10*/
public class ConcreteFactory implements Factory {@Overridepublic Product createProduct() {return new ConcreteProductA(); // 或者返回 new ConcreteProductB()}
}

客户端代码

public class Client {public static void main(String[] args) {Factory factory = new ConcreteFactory();Product product = factory.createProduct();product.use();}
}

策略模式

策略模式是一种行为型设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换使用。

特点

算法的封装

策略模式将算法封装在独立的策略类中,使得算法的变化不会影响到使用算法的客户。

行为的替换

策略模式使得算法或行为可以在运行时更换,提高了程序的灵活性。

解耦

策略模式实现了算法的使用与实现的解耦。

实现

定义策略接口

/***  Strategy 接口* @author leon* @date 2024-09-07 14:44:30*/
public interface Strategy {void execute();
}

定义 ConcreteStrategyA


/***  ConcreteStrategyA 类* @author leon* @date 2024-09-07 14:44:58*/
public class ConcreteStrategyA implements Strategy {@Overridepublic void execute() {System.out.println("Executing ConcreteStrategyA");}
}

定义 ConcreteStrategyB类

/***  ConcreteStrategyB 类* @author leon* @date 2024-09-07 14:45:35*/
public class ConcreteStrategyB implements Strategy {@Overridepublic void execute() {System.out.println("Executing ConcreteStrategyB");}
}

定义 Context

/*** Context 类* @author leon* @date 2024-09-07 14:44:30*/
public class Context {private Strategy strategy;public Context(Strategy strategy) {this.strategy = strategy;}public void setStrategy(Strategy strategy) {this.strategy = strategy;}public void executeStrategy() {strategy.execute();}
}

客户端代码

public class Client {public static void main(String[] args) {Context context = new Context(new ConcreteStrategyA());context.executeStrategy();// 动态更换策略context.setStrategy(new ConcreteStrategyB());context.executeStrategy();}
}

区别

目的不同:

工厂模式主要用于对象的创建,而策略模式主要用于定义一系列算法或行为,并使它们可以互换。

应用场景:

工厂模式适用于需要创建复杂对象的场景,策略模式适用于需要根据不同条件改变算法或行为的场景。

实现方式:

工厂模式通过工厂类来创建对象,策略模式通过上下文来使用不同的策略对象。

总结

工厂模式和策略模式虽然都是设计模式,但它们的目的、应用场景和实现方式各有不同。理解它们之间的区别有助于在合适的场景选择合适的模式,从而提高软件设计的灵活性和可维护性。


good day!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词