当前位置:网站首页>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 .
边栏推荐
- How many times is PTA 1101 B than a
- I feel cheated. Wechat tests the function of "size number" internally, and two wechat can be registered with the same mobile number
- 强化学习-学习笔记8 | Q-learning
- PTA 1102 教超冠军卷
- NAT地址转换
- 前首富,沉迷种田
- 咋吃都不胖的朋友,Nature告诉你原因:是基因突变了
- 【Unity Shader】插入Pass实现模型遮挡X光透视效果
- 基于图像和激光的多模态点云融合与视觉定位
- 企业展厅设计中常用的三种多媒体技术形式
猜你喜欢
随机推荐
咋吃都不胖的朋友,Nature告诉你原因:是基因突变了
IP netns command (memo)
6. About JWT
Industry case | digital operation base helps the transformation of life insurance industry
2022-07-04 matlab读取视频帧并保存
Kubernetes DevOps CD工具对比选型
C语言中匿名的最高境界
Charles+Postern的APP抓包
Review of network attack and defense
如何给“不卖笔”的晨光估值?
Basic concepts and properties of binary tree
Kirk Borne的本周学习资源精选【点击标题直接下载】
GSAP animation library
A hodgepodge of ICER knowledge points (attached with a large number of topics, which are constantly being updated)
清华、剑桥、UIC联合推出首个中文事实核查数据集:基于证据、涵盖医疗社会等多个领域
Complete e-commerce system
Datasimba launched wechat applet, and datanuza accepted the test of the whole scene| StartDT Hackathon
【塔望方法论】塔望3W消费战略 - U&A研究法
完整的电商系统
2022上半年朋友圈都在传的10本书,找到了