论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
分布式数据库
›
工厂模式和计谋模式区
工厂模式和计谋模式区
写过一篇
金牌会员
|
2024-8-27 06:43:15
|
显示全部楼层
|
阅读模式
楼主
主题
971
|
帖子
971
|
积分
2913
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
工厂模式(Factory Pattern)和计谋模式(Strategy Pattern)是两种常见的设计模式,它们都用于办理不同场景下的代码组织题目。以下是它们的区别和应用场景的具体比较:
工厂模式(Factory Pattern):
工厂模式是一种创建型设计模式,重要用于对象的创建。它通过将对象的创建逻辑封装到一个工厂类中,使得客户端不必关心对象的具体创建过程,从而进步代码的可扩展性和维护性。
核心头脑:界说一个接口用于创建对象,并让子类决定实例化哪一个类。工厂模式将实例化操作推迟到子类中进行。
计谋模式(Strategy Pattern):
计谋模式是一种行为型设计模式,它将算法、行为、或逻辑的不同实现封装成独立的计谋类,并允许它们在运行时相互替换。计谋模式通过将行为的具体实现分离出来,使得算法可以在不改变客户端代码的情况下动态改变。
核心头脑:界说一系列算法或行为,并将它们封装到独立的计谋类中,客户端可以根据需要在运行时选择合适的计谋。
2.意图
工厂模式:办理对象的创建题目。通过将对象的创建封装在一个工厂中,避免客户端直接使用new关键字,使代码更具扩展性。
计谋模式:办理行为的选择题目。通过将不同的行为封装为计谋类,使得可以动态替换算法或行为。
3.应用场景
工厂模式的适用场景:
需要创建复杂对象时,且对象创建逻辑比较复杂。
客户端不需要知道具体的对象创建细节,只需要得到正确的对象实例。
代码中有多个具体类的创建逻辑,且未来大概会增加新的类。
计谋模式的适用场景:
有多种算法、操作或行为可以互换,且可以在运行时动态选择。
需要避免使用大量if-else或switch语句来选择算法或行为。
想要将算法或行为与具体的业务逻辑分离,便于扩展和维护。
4.结构对比
工厂模式结构:
工厂类:负责创建对象的逻辑。
产品接口:界说产品对象的公共接口。
具体产品类:工厂类生产的具体产品。
计谋模式结构:
上下文类:持有一个计谋类的引用,并在运行时选择不同的计谋实行相应的行为。
计谋接口:界说不同计谋类的公共接口。
具体计谋类:封装具体的算法或行为。
5.代码示例
工厂模式示例
// 产品接口
interface Product {
void create();
}
// 具体产品类
class ConcreteProductA implements Product {
public void create() {
System.out.println("Product A created");
}
}
class ConcreteProductB implements Product {
public void create() {
System.out.println("Product B created");
}
}
// 工厂类
class ProductFactory {
public static Product createProduct(String type) {
if (type.equals("A")) {
return new ConcreteProductA();
} else if (type.equals("B")) {
return new ConcreteProductB();
} else {
throw new IllegalArgumentException("Unknown product type");
}
}
}
// 客户端使用
public class Client {
public static void main(String[] args) {
Product product = ProductFactory.createProduct("A");
product.create(); // 输出: Product A created
}
}
复制代码
计谋模式示例
// 策略接口
interface Strategy {
void execute();
}
// 具体策略类
class ConcreteStrategyA implements Strategy {
public void execute() {
System.out.println("Executing strategy A");
}
}
class ConcreteStrategyB implements Strategy {
public void execute() {
System.out.println("Executing strategy B");
}
}
// 上下文类
class Context {
private 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();
context.setStrategy(new ConcreteStrategyA());
context.executeStrategy(); // 输出: Executing strategy A
context.setStrategy(new ConcreteStrategyB());
context.executeStrategy(); // 输出: Executing strategy B
}
}
复制代码
6.优缺点
工厂模式的优点:
解耦了对象的创建过程,便于扩展新的产品类。
进步了代码的灵活性和可维护性。
工厂模式的缺点:
大概增加代码的复杂性,尤其是涉及多个工厂类时。
难以处置惩罚非常复杂的对象创建逻辑。
计谋模式的优点:
避免了大量的if-else或switch语句,使得算法选择更加灵活。
可以动态改变计谋,扩展新的计谋类无需修改现有代码。
计谋模式的缺点:
大概导致计谋类数量过多,增加代码管理的复杂性。
上下文类必须知道计谋的接口,增加了客户端的复杂度。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
写过一篇
金牌会员
这个人很懒什么都没写!
楼主热帖
hibernate入门
kubernetes数据持久化StorageClass动态 ...
回忆我的第一个软件项目
Debian/Ubuntu使用apt安装php8.x
Java EnumMap putAll()方法具有什么功 ...
26基于java的电影院售票管理系统设计 ...
OpenHarmony开源鸿蒙与HarmonyOS商业鸿 ...
Jvm调优
管理软件定制公司 广州管理软件定制开 ...
基于LSTM的多变量多输出温湿度预测 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
.Net
Oracle
程序人生
Mysql
快速回复
返回顶部
返回列表