Syong : 策略模式

策略模式

What
策略模式(Strategy Pattern)
Bing搜索结果

In computer programming, the strategy pattern (also known as the policy pattern) is a behavioral software design pattern that enables selecting an algorithm at runtime. Instead of implementing a single algorithm directly, code receives run-time instructions as to which in a family of algorithms to use.

一个类的行为或其算法可以在运行时更改

How

//测试类
public class Test {
    public static void main(String []args) {
		Context context = new Context();
		//模拟运行中context改变策略影响其行为
		context.setStrategy(new RunStrategy());
		context.doStrategy();
		context.setStrategy(new WalkStrategy());
		context.doStrategy();
		context.setStrategy(new BusStrategy());
		context.doStrategy();
    }
}
//一个行为随着策略对象改变而改变的 context 对象
class Context {
	private Strategy strategy;
	public void setStrategy(Strategy strategy){
		this.strategy = strategy;
	}
	public void doStrategy(){
		strategy.goHome();
	}
}
//回家策略
interface Strategy{
	void goHome();
}
//跑步回家策略
class RunStrategy implements Strategy{
	@Override
	public void goHome(){
		System.out.println("通过跑步回家!");
	}
}
//走路回家策略
class WalkStrategy implements Strategy{
	@Override
	public void goHome(){
		System.out.println("通过走路回家!");
	}
}
//搭公交车回家策略
class BusStrategy implements Strategy{
	@Override
	public void goHome(){
		System.out.println("通过搭公交车回家!");
	}
}

When & Where
涉及到的涉及原则:单一职责原则Single-Responsibilitiy Principle(SRP)

对一个类而言,应该仅有一个引起它变化的原因。如果存在多于一个动机去改变一个类,那么这个类就具有多于一个的职责,就应该把多余的职责分离出去,再去创建一些类来完成每一个职责。

容错恢复机制:策略模式实际应用场景

结束语优秀是一种习惯。

引用\[1\]和\[2\]提供了关于ThreadLocal的一些信息。ThreadLocal是一个用于在多线程环境下存储线程本地变量的工具类。每个线程都有一个threadLocals参数,它是一个ThreadLocal.ThreadLocalMap类型的对象,用于存储线程本地变量。\[1\]\[2\]引用的代码片段展示了ThreadLocal的一些操作,包括创建ThreadLocal对象、将值存储到ThreadLocalMap中以及从ThreadLocalMap中获取值。 在问题中提到了ThreadLocalHelper,但是没有提供具体的引用内容。根据问题描述,ThreadLocalHelper可能是一个自定义的工具类,用于帮助管理ThreadLocal对象。然而,由于没有提供更多的信息,无法给出更具体的回答。 ThreadLocal在实际应用中有很多用途,如声明式事务中的数据库连接管理、拦截器中的用户信息存储等。通过将对象存储在ThreadLocal中,可以实现线程间的数据隔离,每个线程都可以独立地访问和修改自己的ThreadLocal变量,而不会影响其他线程的数据。这在多线程环境下非常有用。 总结起来,ThreadLocal是一个用于在多线程环境下存储线程本地变量的工具类,通过ThreadLocalMap实现。它可以帮助实现线程间的数据隔离,每个线程都可以独立地访问和修改自己的ThreadLocal变量。ThreadLocalHelper可能是一个自定义的工具类,但由于缺乏具体信息,无法给出更详细的解释。 #### 引用[.reference_title] - *1* *2* [Syong : ThreadLocal](https://blog.youkuaiyun.com/CSY_LOVE_GYY/article/details/103236361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ThreadLocal及强软弱虚引用](https://blog.youkuaiyun.com/qq_43583755/article/details/121269598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值