当前位置:网站首页>Policy mode - unity
Policy mode - unity
2022-07-07 19:05:00 【Just be interesting】
List of articles
The strategy pattern
The strategy pattern is an object behavior pattern . This mode Define a series of algorithms , Encapsulate it , Make these algorithms complete specific tasks , Can replace each other . Through a scenario class , Separate its algorithm implementation from business logic , Dynamically switch different algorithms for management .
Strategic patterns are also very common in life , Such as the way of travel , When you need to reach a destination , We need a way to achieve , Cycling , Take the bus, etc , They all achieve the same task , But the way of implementation is quite different . In the program , Sorting is very common , Different sorting methods have different specific ( Like fast platoon , Homing , Stacking and so on ), Through different scenes , We can choose these sorts flexibly .
structure

explain
- Abstract strategy (IStrategy)- Declare the general interface of the algorithm , Delegate algorithm implementation to subclasses .
- Specific strategies (Concrete Strategy)- Implement specific algorithms .
- scene (Context)- Dependent policy references , Do not realize the function , The method responsible for calling the policy interface .
The algorithm itself needs to be independent
Realization
Example : Scene: the switch (Scene Switching)
Scene: the switch ( Abstract strategy )
public interface ISceneSwitch
{
void SceneSwitch();
}
Switch algorithm ( Specific strategies )
// Fade switch
public class FadeSwitch : ISceneSwitch
{
public void SceneSwitch()
{
Debug.Log("Scene Fade Switch");
}
}
// Circular switch
public class CircularSwitch : ISceneSwitch
{
public void SceneSwitch()
{
Debug.Log("Circular Scene Switch");
}
}
scene ( scene )
public class Scene
{
private ISceneSwitch _sceneSwitch;
public ISceneSwitch SceneSwitch
{
set => _sceneSwitch = value;
}
public Scene(ISceneSwitch sceneSwitch)
{
_sceneSwitch = sceneSwitch;
}
public void SceneSwitching()
{
_sceneSwitch.SceneSwitch();
}
}
call
public class StrategyExample : MonoBehaviour
{
private void Start()
{
Scene scene = new Scene(new FadeSwitch());
scene.SceneSwitching();
scene.SceneSwitch = new CircularSwitch();
scene.SceneSwitching();
}
}

Application scenarios
- When the client needs dynamic switching algorithm , And different algorithms realize a specific task
- When a large number of conditional branch statements are used to perform tasks , We can use strategy patterns
- The algorithm itself needs to be separated from the business logic , And the algorithm implementation does not depend on context
Advantages and disadvantages
advantage
- Avoid using multiple branch statements , Such as if…else,switch…case etc. , The code is simpler .
- It satisfies the open close principle , When extending the new algorithm , There is no need to change the client code .
- Separate business logic and Algorithm
shortcoming
- Make the system more complex
- The client itself needs to understand the differences between different policy algorithms
The difference from other models
- The bridge and Strategy Very similar , And they delegate tasks to reference objects , But the essence is different , Bridging focuses on separating functions , Interact with each implementation reference through abstract classes , To complete the corresponding functions , The essence is to combine various functions into a large structure , And the idea is mainly to replace inheritance by composition to complete the separation of abstraction and implementation . The strategic model focuses on only one , That's it The algorithms can switch between each other in operation , And they don't interfere with each other , Algorithm implementation and business logic separation .
- Template method and Strategy They are all different implementations of algorithms . But the idea is different , The template method itself is on an algorithm skeleton , Rewrite specific steps , The algorithm itself is sequential . And the algorithm implementation of strategy , It can be completely different , As long as you complete a specific task . Template methods are class inheritance , Strategy is a combination of objects . Template method algorithm is static , The strategy algorithm is dynamic .
- state and Strategy It's all about function switching at runtime . Function switching of state , It is mainly the state change that makes the function switch , The strategy is to actively switch . There is no clear separation between function realization and state switching , It can cooperate with the strategic mode , Realize the separation of implementation and switching .
边栏推荐
- 2022-07-04 matlab reads video frames and saves them
- 体总:安全有序恢复线下体育赛事,力争做到国内赛事应办尽办
- Idea completely uninstalls installation and configuration notes
- Redis的发布与订阅
- Save the memory of the model! Meta & UC Berkeley proposed memvit. The modeling time support is 30 times longer than the existing model, and the calculation amount is only increased by 4.5%
- Thread factory in thread pool
- RIP和OSPF的区别和配置命令
- 静态路由配置
- The moveposition function of rigidbody2d of unity2d solves the problem of people or screen jitter when moving
- sqlite sql 异常 near “with“: syntax error
猜你喜欢

Reinforcement learning - learning notes 8 | Q-learning

The highest level of anonymity in C language

Do you know all four common cache modes?

Wireshark分析抓包数据*.cap

A hodgepodge of ICER knowledge points (attached with a large number of topics, which are constantly being updated)

Charles+Postern的APP抓包

I feel cheated. Wechat tests the function of "size number" internally, and two wechat can be registered with the same mobile number

如何选择合适的自动化测试工具?

将模型的记忆保存下来!Meta&UC Berkeley提出MeMViT,建模时间支持比现有模型长30倍,计算量仅增加4.5%...
![Learn open62541 -- [67] add custom enum and display name](/img/98/e5e25af90b3f98c2be11d7d21e5ea6.png)
Learn open62541 -- [67] add custom enum and display name
随机推荐
手把手教姐姐写消息队列
微信网页调试8.0.19换掉X5内核,改用xweb,所以x5调试方式已经不能用了,现在有了解决方案
Interview vipshop internship testing post, Tiktok internship testing post [true submission]
String type, constant type and container type of go language
Tsinghua, Cambridge and UIC jointly launched the first Chinese fact verification data set: evidence-based, covering many fields such as medical society
10 schemes to ensure interface data security
Cadre de validation des données Apache bval réutilisé
数据验证框架 Apache BVal 再使用
低代码助力企业数字化转型会让程序员失业?
Kirk borne's selection of learning resources this week [click the title to download directly]
如何选择合适的自动化测试工具?
6. About JWT
idea彻底卸载安装及配置笔记
嵌入式C语言程序调试和宏使用的技巧
Scientists have observed for the first time that the "electron vortex" helps to design more efficient electronic products
学习open62541 --- [67] 添加自定义Enum并显示名字
99% of people don't know that privatized deployment is also a permanently free instant messaging software!
标准ACL与扩展ACL
Three forms of multimedia technology commonly used in enterprise exhibition hall design
虚拟数字人里的生意经