Паттерн Mutator
Код:
class CMutator
{
public CMutator()
{
Console.WriteLine("call Constructor");
m_Method = new TMethod[]{
Method1
, Method2
};
}
private void Method1(){
Console.WriteLine("call Method1");
}
private void Method2(){
Console.WriteLine("call Method2");
}
private delegate void TMethod();
private static TMethod[] m_Method;
private static int m_CurrentMethod=0;
public void SomeMethod(){
if (m_CurrentMethod == m_Method.Length) m_CurrentMethod = 0;
m_Method[m_CurrentMethod++]();
}
}
class CSwitchMutator
{
public CSwitchMutator()
{
Console.WriteLine("call Constructor");
m_Method = new TMethod(Method1);
}
private void Method1(){
Console.WriteLine("call Method1");
m_Method = new TMethod(Method2);
}
private void Method2(){
Console.WriteLine("call Method2");
m_Method = new TMethod(Method1);
}
private delegate void TMethod();
private TMethod m_Method;
public void SomeMethod(){
m_Method();
}
}
{
public CMutator()
{
Console.WriteLine("call Constructor");
m_Method = new TMethod[]{
Method1
, Method2
};
}
private void Method1(){
Console.WriteLine("call Method1");
}
private void Method2(){
Console.WriteLine("call Method2");
}
private delegate void TMethod();
private static TMethod[] m_Method;
private static int m_CurrentMethod=0;
public void SomeMethod(){
if (m_CurrentMethod == m_Method.Length) m_CurrentMethod = 0;
m_Method[m_CurrentMethod++]();
}
}
class CSwitchMutator
{
public CSwitchMutator()
{
Console.WriteLine("call Constructor");
m_Method = new TMethod(Method1);
}
private void Method1(){
Console.WriteLine("call Method1");
m_Method = new TMethod(Method2);
}
private void Method2(){
Console.WriteLine("call Method2");
m_Method = new TMethod(Method1);
}
private delegate void TMethod();
private TMethod m_Method;
public void SomeMethod(){
m_Method();
}
}
Задача Mutator - модифицировать существующие объекты вместо порождения новых, она довольно специфична.
Спасибо, не знал что название уже занято, вопрос остается в силе.