第113回 Chain of Responsibilityパターンについて
公開日:2014-10-31 更新日:2019-05-13
1. 概要
独り言によるプログラミング講座「第113回 Chain of Responsibilityパターンについて」です。
デザインパターンの1つである Chain of Responsibility パターンについて説明しています。
デザインパターンの1つである Chain of Responsibility パターンについて説明しています。
2. 動画
3. 動画中に書いたソース
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//★独り言によるプログラミング講座
//■Chain of Responsibilityパターンについて
// 複数オブジェクトの中の、
// 誰かに処理をさせるパターン
}
private void button1_Click(object sender, EventArgs e)
{
丸 obj丸 = new 丸();
三角 obj三角 = new 三角();
四角 obj四角 = new 四角();
//リスト構造の作成
obj丸.setNext(obj三角);
obj三角.setNext(obj四角);
obj丸.処理をする(100);
List<IChain> list = new List<IChain>();
list.Add(obj丸);
list.Add(obj三角);
list.Add(obj四角);
foreach (var obj in list ) {
/*
if (obj.処理をする(3) == true) {
break;
}
*/
}
}
}
interface IChain {
void setNext(IChain obj);
void 処理をする(int value);
}
class 丸 : IChain {
IChain objNext = null;
public void setNext(IChain obj) {
objNext = obj;
}
public void 処理をする(int value) {
if (value == 0) {
MessageBox.Show("丸が処理しました。");
return;
}
//処理できなかった場合
objNext.処理をする(value);
}
}
class 三角 : IChain {
IChain objNext = null;
public void setNext(IChain obj) {
objNext = obj;
}
public void 処理をする(int value) {
if (value == 1) {
MessageBox.Show("三角が処理しました。");
return;
}
//処理できなかった場合
objNext.処理をする(value);
}
}
class 四角 : IChain {
IChain objNext = null;
public void setNext(IChain obj) {
objNext = obj;
}
public void 処理をする(int value) {
MessageBox.Show("四角が処理しました。");
}
}
}