第102回 Decoratorパターンについて
公開日:2014-10-22 更新日:2019-05-11
1. 概要
独り言によるプログラミング講座「第102回 Decoratorパターンについて」です。
デザインパターンの1つである Decorator パターンについて説明しています。
Decorator パターンは、I/Fを変更せずに機能を変更するのが目的です。
これに対し、Adapter パターン、Proxy パターンは、基本的には機能を変更しません。
目的が異なるだけで、実装の考え方は同じです。
デザインパターンの1つである Decorator パターンについて説明しています。
Decorator パターンは、I/Fを変更せずに機能を変更するのが目的です。
これに対し、Adapter パターン、Proxy パターンは、基本的には機能を変更しません。
目的が異なるだけで、実装の考え方は同じです。
2. 動画
3. 動画中に書いたソース
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//★独り言によるプログラミング講座
//■Decoratorパターンについて
// 継承を使わずに機能拡張(継承)するパターン
// Proxyとほぼ同じ。
}
private void button1_Click(object sender, EventArgs e)
{
//ITest obj = new TestA();
ITest obj = new TestB(new TestA());
obj = new TestC(obj);
//ここの処理は変わらない
MessageBox.Show(obj.getValue().ToString());
}
}
interface ITest {
int getValue();
}
class TestA : ITest {
public int getValue() {
return 100;
}
}
//通常継承
class TestAEx : TestA {}
class TestB : ITest {
ITest objTest = null;
//コンストラクタ
public TestB(ITest obj) {
objTest = obj; //内部で保持する
}
public int getValue() {
return (int)(objTest.getValue() * 1.08);
}
}
class TestC : ITest {
ITest objTest = null;
//コンストラクタ
public TestC(ITest obj) {
objTest = obj; //内部で保持する
}
public int getValue() {
return (int)(objTest.getValue() / 1.08);
}
}
}