首页 > 其他分享 >cpp: State Pattern

cpp: State Pattern

时间:2023-05-29 23:35:33浏览次数:56  
标签:Liked Gold power Pattern namespace mainobj State cpp include

 

/*****************************************************************//**
 * \file   Gold.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLD_H 
#define GOLD_H 




#include <iostream>


using namespace std;




namespace DuJewelryStatePattern
{
	class GoldStatus;
	/// <summary>
	/// 液态 固态 气态  无态   solid, liquid and gas  stateless
	/// </summary>
	class Gold
	{

	public:
		Gold(int life);
		~Gold();

	public:
		/// <summary>
		/// 
		/// </summary>
		/// <param name="power"></param>
		void Liked(int power);  

	public:
		/// <summary>
		/// 获取生命值
		/// </summary>
		/// <returns></returns>
		int GetBoilingPoint() //
		{
			return mBoilingPoint;
		}
		/// <summary>
		/// 设置生命值
		/// </summary>
		/// <param name="life"></param>
		void SetBoilingPoint(int life)
		{
			mBoilingPoint = life;
		}

		/// <summary>
		/// 获取当前状态
		/// </summary>
		/// <returns></returns>
		GoldStatus* getCurrentState() 
		{
			return mState;
		}

		/// <summary>
		/// 设置当前状态
		/// </summary>
		/// <param name="pstate"></param>
		void setCurrentState(GoldStatus* pstate) 
		{
			mState = pstate;
		}

	private:
		/// <summary>
		/// 沸點
		/// </summary>
		int  mBoilingPoint;
		/// <summary>
		/// 持有状态对象
		/// </summary>
		GoldStatus* mState;  



	};

}


#endif

/*****************************************************************//**
 * \file   Gold.cpp
 * \brief    State Pattern 状态模式  C++ 14
 *  2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/

#include "Gold.h"
#include "GoldStatusLiquid.h"


using namespace std;




namespace DuJewelryStatePattern
{

	/// <summary>
	/// 构造函数,怪物的初始状态
	/// </summary>
	/// <param name="life"></param>
	Gold::Gold(int life) :mBoilingPoint(life), mState(nullptr)
	{
		//mState = new GoldStatusLiquid();
		mState = GoldStatusLiquid::getInstance();
	}

	/// <summary>
	/// 析构函数
	/// </summary>
	Gold::~Gold()
	{
		//delete m_pState;
	}

	//怪物被攻击

	void Gold::Liked(int power)
	{
		/*
		int orglife = mBoilingPoint; //暂存原来的怪物血量值用于后续比较
		mBoilingPoint -= power;      //怪物剩余的血量
		if (orglife > 400)    //怪物原来处于凶悍状态
		{
			if (mBoilingPoint > 400) //状态未变
			{
				//cout << "怪物受到" << power << "点伤害并对主角进行疯狂的反击!" << endl;
				mState->Liked(power, this); //其他的逻辑代码被本Monster类委托给了具体状态类来处理
			}
			else if (mBoilingPoint > 100) //状态从凶悍改变到不安
			{
				//cout << "怪物受到" << power << "点伤害并对主角进行反击,怪物变得焦躁不安并开始呼唤支援!" << endl;
				delete mState; //释放原有的状态对象
				mState = new GoldStatusGas(); //怪物转到不安状态
				mState->Liked(power, this);
			}
			else if (mBoilingPoint > 0)//状态从凶悍状态改变到恐惧状态,主角的攻击太恐怖了
			{
				//cout << "怪物受到" << power << "点伤害,怪物变得恐惧并开始逃跑!" << endl;
				delete mState; //释放原有的状态对象
				mState = new GoldStatusSolid(); //怪物转到恐惧状态
				mState->Liked(power, this);
			}
			else//状态从凶悍改变到死亡
			{
				//cout << "怪物受到" << power << "点伤害,已经死亡!" << endl;
				delete mState; //释放原有的状态对象
				mState = new GoldStatusStateless(); //怪物转到死亡状态
				mState->Liked(power, this);
			}
		}
		else if (orglife > 100) //怪物原来处于不安状态
		{
			if (mBoilingPoint > 100) //状态未变
			{
				//cout << "怪物受到" << power << "点伤害并对主角进行反击,并继续急促的呼唤支援!" << endl;
				mState->Liked(power, this);
			}
			else if (mBoilingPoint > 0)//状态从不安改变到恐惧
			{
				//cout << "怪物受到" << power << "点伤害,怪物变得恐惧并开始逃跑!" << endl;
				delete mState; //释放原有的状态对象
				mState = new GoldStatusSolid(); //怪物转到恐惧状态
				mState->Liked(power, this);
			}
			else//状态从不安改变到死亡
			{
				//cout << "怪物受到" << power << "点伤害,已经死亡!" << endl;
				delete mState; //释放原有的状态对象
				mState = new GoldStatusStateless(); //怪物转到死亡状态
				mState->Liked(power, this);
			}
		}
		else if (orglife > 0) //怪物原来处于恐惧状态
		{
			if (mBoilingPoint > 0)//状态未变
			{
				//cout << "怪物受到" << power << "点伤害,怪物继续逃跑!" << endl;
				mState->Liked(power, this);
			}
			else//状态从恐惧改变到死亡
			{
				//cout << "怪物受到" << power << "点伤害,已经死亡!" << endl;
				delete mState; //释放原有的状态对象
				mState = new GoldStatusStateless(); //怪物转到死亡状态
				mState->Liked(power, this);
			}
		}
		else //怪物已经死亡
		{
			//已经死亡的怪物,状态不会继续发生改变
			//cout << "怪物已死亡,不能再被攻击!" << endl;
			mState->Liked(power, this);
		}
		*/
		mState->Liked(power, this);

	}

}

#pragma once
#ifndef GOLDSTATUS_H 
#define GOLDSTATUS_H 




#include <iostream>


using namespace std;




namespace DuJewelryStatePattern
{

	/// <summary>
	/// 
	/// </summary>
	class Gold;
	/// <summary>
	/// 
	/// </summary>
	class GoldStatus
	{
	public:
		/// <summary>
		/// 
		/// </summary>
		/// <param name="power"></param>
		/// <param name="mainobj"></param>
		virtual void Liked(int power, Gold* mainobj) = 0;
		/// <summary>
		/// 
		/// </summary>
		virtual ~GoldStatus() {}
	};
	

}

#endif

/*****************************************************************//**
 * \file   GoldStatusStateless.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSSTATELESS_H 
#define GOLDSTATUSSTATELESS_H 




#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"

using namespace std;




namespace DuJewelryStatePattern
{

	/// <summary>
	/// 
	/// </summary>
	class GoldStatusStateless:public GoldStatus
	{
	public:
		virtual void Liked(int power, Gold* mainobj);

	public:
		static GoldStatusStateless* getInstance()
		{
			static GoldStatusStateless instance;
			return &instance;
		}


	};

}

#endif

/*****************************************************************//**
 * \file   GoldStatusStateless.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#include "GoldStatusStateless.h"
using namespace std;




namespace DuJewelryStatePattern
{


	/// <summary>
	/// 
	/// </summary>
	/// <param name="power"></param>
	/// <param name="mainobj"></param>
	void GoldStatusStateless::Liked(int power, Gold* mainobj)
	{
		int orglife = mainobj->GetBoilingPoint();
		if (orglife > 0)
		{
			//
			mainobj->SetBoilingPoint(orglife - power); //无态
			//处理等
		}
		cout << "无形之中!" << std::endl;
	}

}

/*****************************************************************//**
 * \file   GoldStatusSolid.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSSOLID_H 
#define GOLDSTATUSSOLID_H 




#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusGas.h"
#include "GoldStatusStateless.h"

using namespace std;




namespace DuJewelryStatePattern
{

	/// <summary>
	/// 
	/// </summary>
	class GoldStatusSolid :public GoldStatus
	{
	public:
		virtual void Liked(int power, Gold* mainobj);

	public:
		static GoldStatusSolid* getInstance()
		{
			static GoldStatusSolid instance;
			return &instance;
		}

	};
}

#endif


/*****************************************************************//**
 * \file   GoldStatusSolid.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/

#include "GoldStatusSolid.h"
using namespace std;




namespace DuJewelryStatePattern
{
	/// <summary>
	/// 
	/// </summary>
	/// <param name="power"></param>
	/// <param name="mainobj"></param>
	void GoldStatusSolid::Liked(int power, Gold* mainobj)
	{
		int orglife = mainobj->GetBoilingPoint();
		if ((orglife - power) > 0)       //
		{
			//状态未变
			mainobj->SetBoilingPoint(orglife - power); //液态
			cout << "处于液态状态中,随处都有其容入之处!" << std::endl;
			//处理其他动作逻辑比如逃跑
		}
		else
		{
			//不管下个状态是啥,总之不会是凶悍、不安和恐惧状态,只可能是死亡状态
			//delete mainobj->getCurrentState();
			//mainobj->setCurrentState(new GoldStatusDead);
			mainobj->setCurrentState(GoldStatusStateless::getInstance());
			mainobj->getCurrentState()->Liked(power, mainobj);
		}
	}

}

/*****************************************************************//**
 * \file   GoldStatusLiquid.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSFEROC_H 
#define GOLDSTATUSFEROC_H 




#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"

#include "GoldStatusGas.h"

using namespace std;




namespace DuJewelryStatePattern
{
	/// <summary>
	/// 
	/// </summary>
	class GoldStatusLiquid:public GoldStatus
	{

	public:
		virtual void Liked(int power, Gold* mainobj);


	public:
		static GoldStatusLiquid* getInstance()
		{
			static GoldStatusLiquid instance;
			return &instance;
		}

	};

}
#endif

/*****************************************************************//**
 * \file   GoldStatusSolid.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/

#include "GoldStatusSolid.h"
using namespace std;




namespace DuJewelryStatePattern
{
	/// <summary>
	/// 
	/// </summary>
	/// <param name="power"></param>
	/// <param name="mainobj"></param>
	void GoldStatusSolid::Liked(int power, Gold* mainobj)
	{
		int orglife = mainobj->GetBoilingPoint();
		if ((orglife - power) > 0)       //
		{
			//状态未变
			mainobj->SetBoilingPoint(orglife - power); //液态
			cout << "处于液态状态中,随处都有其容入之处!" << std::endl;
			//处理其他动作逻辑比如逃跑
		}
		else
		{
			//不管下个状态是啥,总之不会是凶悍、不安和恐惧状态,只可能是死亡状态
			//delete mainobj->getCurrentState();
			//mainobj->setCurrentState(new GoldStatusDead);
			mainobj->setCurrentState(GoldStatusStateless::getInstance());
			mainobj->getCurrentState()->Liked(power, mainobj);
		}
	}

}

/*****************************************************************//**
 * \file   GoldStatusGas.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSGAS_H 
#define GOLDSTATUSGAS_H 




#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusSolid.h"

using namespace std;




namespace DuJewelryStatePattern
{

	/// <summary>
	/// 
	/// </summary>
	class GoldStatusGas:public GoldStatus
	{
	public:
		virtual void Liked(int power, Gold* mainobj);

	public:
		static GoldStatusGas* getInstance()
		{
			static GoldStatusGas instance;
			return &instance;
		}


	};
}
#endif

/*****************************************************************//**
 * \file   GoldStatusGas.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#include "GoldStatusGas.h"
using namespace std;




namespace DuJewelryStatePattern
{


	/// <summary>
	/// 
	/// </summary>
	/// <param name="power"></param>
	/// <param name="mainobj"></param>
	void GoldStatusGas::Liked(int power, Gold* mainobj)
	{
		int orglife = mainobj->GetBoilingPoint();
		if ((orglife - power) > 100)       //怪物原来处于不安状态,现在依旧处于不安状态
		{
			//状态未变
			mainobj->SetBoilingPoint(orglife - power); //气态
			cout << "处于气态状态中,可以四处飘溢!" << std::endl;
			//处理其他动作逻辑比如反击和不停的呼唤支援
		}
		else
		{
			//不管下个状态是啥,总之不会是凶悍和不安状态,只可能是恐惧、死亡状态之一,先无条件转到恐惧状态去
			//delete mainobj->getCurrentState();
			//mainobj->setCurrentState(new GoldStatusFear);
			mainobj->setCurrentState(GoldStatusSolid::getInstance());
			mainobj->getCurrentState()->Liked(power, mainobj);
		}
	}

}

/*****************************************************************//**
 * \file   Pear.h
 * \brief   State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/

#pragma once

#ifndef PEAR_H 
#define PEAR_H 




#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusGas.h"
#include "GoldStatusStateless.h"

using namespace std;




namespace DuJewelryStatePattern
{

	//怪物状态枚举值
	enum PearState
	{
		/// <summary>
		/// 液态
		/// </summary>
		Solid, 
		/// <summary>
		/// 固态
		/// </summary>
		Liquid, 
		/// <summary>
		/// 气态
		/// </summary>
		Gas,
		/// <summary>
		/// 无态
		/// </summary>
		Stateless
	};

	/// <summary>
	/// 
	/// </summary>
	class Pear
	{

	public:
		//构造函数,怪物的初始状态从“凶悍”开始
		Pear(int life) :mBoilingPoint(life), mStatus(Solid) {}

	public:
		/// <summary>
		/// 
		/// </summary>
		/// <param name="power"></param>
		void Liked(int power)
		{
			mBoilingPoint -= power; 
			if (mStatus == Solid)
			{
				if (mBoilingPoint > 400)
				{
					cout << "液态" << power << " 可以熔炼制工!" << endl;
					//处理其他动作逻辑
				}
				else if (mBoilingPoint > 100)
				{
					cout << "固态" << power << "可以制作精美饰物!" << endl;
					mStatus = Liquid;
					//处理其他动作逻辑
				}
				else if (mBoilingPoint > 0)
				{
					cout << "气态" << power << "可以无处不飘溢!" << endl;
					mStatus = Gas;
					//处理其他动作逻辑
				}
				else
				{
					cout << "无态" << power << "无所不在!" << endl;
					mStatus = Stateless;
					//处理等
				}
			}
			else if (mStatus == Liquid)
			{
				if (mBoilingPoint > 100)
				{
					cout << "固态" << power << "可以制作精美饰物!" << endl;
					//处理其他动作逻辑
				}
				else if (mBoilingPoint > 0)
				{
					cout << "气态" << power << "可以无处不飘溢!" << endl;
					mStatus = Gas;
					//处理其他动作逻辑
				}
				else
				{
					cout << "无态" << power << "无所不在!" << endl;
					mStatus = Stateless;
					//处理等
				}
			}
			else if (mStatus == Solid)
			{
				if (mBoilingPoint > 0)
				{
					cout << "固态" << power << "可以制作精美饰物!" << endl;
					//处理其他动作逻辑比如
				}
				else
				{
					cout << "无态" << power << "无所不在!" << endl;
					mStatus = Stateless;
					//处理等
				}
			}
			else 
			{
				cout << "无态,无所不在!" << endl;
			}
		}
	private:

		/// <summary>
		/// 沸点
		/// </summary>
		int  mBoilingPoint;   
		/// <summary>
		/// 初始状态
		/// </summary>
		PearState   mStatus; 



	};

}

#endif

/*****************************************************************//**
 * \file   GeovinDu.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GEOVINDU_H 
#define GEOVINDU_H 




#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusGas.h"
#include "GoldStatusStateless.h"
#include "Pear.h"


using namespace std;




namespace DuJewelryStatePattern
{

	/// <summary>
	/// 
	/// </summary>
	class GeovinDu
	{

	private:

	public:

		/// <summary>
		/// 
		/// </summary>
		void displaySimple();
		/// <summary>
		/// 
		/// </summary>
		void displayPearSimple();


	};

}

#endif

/*****************************************************************//**
 * \file   GeovinDu.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#include "GeovinDu.h"
using namespace std;




namespace DuJewelryStatePattern
{


	/// <summary>
	/// 
	/// </summary>
	void GeovinDu::displaySimple()
	{

		Gold gold(500);
		cout << "黃金礦挖取,当前处于升華状态,500点!" << endl;
		gold.Liked(20);
		gold.Liked(100);
		gold.Liked(200);
		gold.Liked(170);
		gold.Liked(100);
		gold.Liked(100);

	}
	/// <summary>
	/// 
	/// </summary>
	void GeovinDu::displayPearSimple()
	{
		DuJewelryStatePattern::Pear pear(500);
		cout << "美好状态,500点!" << endl;
		pear.Liked(20);
		pear.Liked(100);
		pear.Liked(200);
		pear.Liked(170);
		pear.Liked(100);
		pear.Liked(100);

	}


}

  

调用:

// ConsoleDuStatePattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _UNICODE

#include <iostream>
#include "GeovinDu.h"

#ifdef _DEBUG   //只在Debug(调试)模式下
#ifndef DEBUG_NEW
#define DEBUG_NEW new(_NORMAL_BLOCK,__FILE__,__LINE__) //重新定义new运算符
#define new DEBUG_NEW
#endif
#endif

using namespace std;
using namespace DuJewelryStatePattern;


int main()
{
    std::cout << "Hello World!涂聚文 Geovin Du\n";
    GeovinDu geovin;
    geovin.displaySimple();
    cout << "***********" << endl;
    geovin.displayPearSimple();
    system("pause");

    return 0;

}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define UNICODE

  

输出

Hello World!涂聚文 Geovin Du
黃金礦挖取,当前处于升華状态,500点!
处于固状态中,可以制作精美器物!
处于气态状态中,可以四处飘溢!
处于气态状态中,可以四处飘溢!
处于液态状态中,随处都有其容入之处!
无形之中!
无形之中!
***********
美好状态,500点!
液态20 可以熔炼制工!
固态100可以制作精美饰物!
固态200可以制作精美饰物!
气态170可以无处不飘溢!
无态,无所不在!
无态,无所不在!
请按任意键继续. . .

  

 

标签:Liked,Gold,power,Pattern,namespace,mainobj,State,cpp,include
From: https://www.cnblogs.com/geovindu/p/17442009.html

相关文章

  • Factory Method Pattern 工厂方法模式简介与 C# 示例【创建型】【设计模式来了】
    〇、简介1、什么是工厂方法模式?一句话解释:  实体类和工厂类均为单独实现,不影响已实现的类,方便扩展。工厂方法模式(FactoryMethodPattern)是一种创建型模式,它允许客户端通过工厂方法来创建对象,而不是直接使用构造函数。这样可以让客户端代码更加灵活,同时保持实现的独立性。工......
  • Linphone callState 电话状态的监听状态(二)
    LinphonecallState电话状态的监听状态callState是一个观察者模式接着上一篇的说,这篇主要是涉及到linphone中c层的注册监听机制.主要是代码追踪和代码过程.linphonecore_jni.cc中的添加监听事件的方法linphonecore_jni.cc中extern"C"voidJava_org_linphone_core_LinphoneC......
  • Linphone callState 电话状态的监听状态(一)
    0.阅读指南因为粘贴的代码比较多,阅读之前请先看目录.如果对这篇文章有什么建议的话,请在评论中指出.尽量把文章写好点.1.说明LinphoneService有个重要的机制,就是通过注册LinphoneCoreListener的实例,当Linphone的状态发声变化的时候,会回调相应的方法.然后linphone上层......
  • Pattern类
    publicclassPattern2{publicstaticvoidmain(String[]args){//1--创建对象Patternp=Pattern.compile("\\d+");//String[]str=p.split("我的qq邮箱是:[email protected]我的电话是:19518135682我的QQ号是:2071357078");Syste......
  • cpp: Composite Pattern
     /*****************************************************************//***\fileGoldDir.h*\brief组合模式CompositePattern亦称:对象树、ObjectTree、Compositec++14*2023年5月28日涂聚文GeovinDuVisualStudio2022edit.*\authorgeovindu*\da......
  • 策略模式-StrategyPattern-使用案例
    TheStrategypatternisabehavioraldesignpatternthatallowsyoutodefineafamilyofalgorithms,encapsulateeachoneasaseparateclass,andmaketheminterchangeable.Itenablesclientstochoosefromdifferentalgorithmsatruntimewithouttightl......
  • ResultSet和satement和preparedStatement
    1. ResultSet[结果集]   8271.1 基本介绍1.表示数据库结果集的数据表,通常通过执行查询数据库的语生成2.ResultSet对象保持一个光标指向其当前的数据行。最初, 光标位于第一行之前3. next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false,因此可以在whil......
  • cpp: Iterator Pattern
     /*****************************************************************//***\fileGoldIterator.h*\brief迭代器模式IteratorPattern*2023年5月22日涂聚文GeovinDuVisualStudio2022edit.*\authorgeovindu*\dateMay2023*******************......
  • Simple Factory Pattern 简单工厂模式简介与 C# 示例【创建型】【设计模式来了】
     〇、简介1、什么是简单工厂模式?一句话解释:  客户类和工厂类严格分工,客户类只需知道怎么用,处理逻辑交给工厂类。简单工厂模式(SimpleFactoryPattern)是日常开发中常用的设计模式。其是一种简单的创建型模式,它通过一个工厂类来创建对象,客户端只需要知道如何使用工厂类,而不需......
  • Spring StateMachine状态机总结
    参考文档:https://blog.51cto.com/u_6346066/5271543https://mp.weixin.qq.com/s?__biz=MzI2MTIzMzY3Mw==&mid=2247540203&idx=1&sn=0855be65db7b01efab77a40b5d0ecc97&chksm=ea5f908ddd28199bb73ebcbcf44970039a574ba4b102e5c4518dad6a96237cbdafab7e4f5938&......