第104回 Stateパターンについて
公開日:2014-10-22 更新日:2019-05-11
1. 概要
独り言によるプログラミング講座「第104回 Stateパターンについて」です。
デザインパターンの1つである State パターンについて説明しています。
デザインパターンの1つである State パターンについて説明しています。
2. 動画
3. 動画中に書いたソース
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//★独り言によるプログラミング講座
//■Stateパターンについて
// 状況に応じて機能を変更するパターン
// 洗濯機
// 状況:洗い、すすぎ、脱水、乾燥
}
private void button1_Click(object sender, EventArgs e)
{
洗濯機 obj = new 洗濯機();
obj.洗濯();
}
}
//状況
interface IState {
void doAction(洗濯機 obj); //何か処理をします
}
class 洗い : IState {
public void doAction(洗濯機 obj) {
MessageBox.Show("洗いました。");
obj.setState( new すすぎ() );
}
}
class すすぎ : IState {
public void doAction(洗濯機 obj) {
MessageBox.Show("すすぎました。");
obj.setState( new 脱水() );
}
}
class 脱水 : IState {
public void doAction(洗濯機 obj) {
MessageBox.Show("脱水しました。");
obj.setState( new 乾燥() );
}
}
class 乾燥 : IState {
public void doAction(洗濯機 obj) {
MessageBox.Show("乾燥しました。");
obj.setState( null );
}
}
class 洗濯機 {
IState 状況 = null;
public void setState(IState obj) {
状況 = obj;
}
public void 洗濯() {
状況 = new 洗い();
while (状況 != null) {
状況.doAction(this);
}
MessageBox.Show("終わりました。");
}
}
}