其它模式:
一.Strategy Pattern(策略模式)
二.Template Method Pattern(模版方法模式)
三.Bridge Pattern(橋接模式)
四.Visitor Pattern(觀察者模式)
五.Action Pattern(命令模式)
设计模式,还没写完,今天有些空,接着写。
今天看看观察模式。最近在帮公司做个考试系统。我们知道,考试有单选,多选,填空等等。。。分别视为一个对象的话,那对这个对象,就会有很多操作?
{
public abstract string Update();
}
public class SingleSelect : QuestionBase
{
public override string Update()
{
return "singleselect";
}
}
public class MultiSelect : QuestionBase
{
public override string Update()
{
return "multiselect";
}
}
public class Blank : QuestionBase
{
public override string Update()
{
return "blank";
}
}
我们可以把它视为被观察者,即为被观察的对象。这里,我只列举了Update操作。
然后,我们观察者,既发出操作的对象。
{
public List<QuestionBase> list = new List<QuestionBase>();
public void Add(QuestionBase qb)
{
list.Add(qb);
}
public void Remove(QuestionBase qb)
{
list.Remove(qb);
}
public string BatUpdate()
{
string result = "";
foreach (QuestionBase qb in list)
result += qb.Update() + "***";
return result;
}
}
public class UpdateOperator : OperateBase
{
}
我们也用抽象类来隔离。这样。观察者(Question)和被观察者(Operator)之间分离,降低耦合。
现在的情景是,当我提交答案胡时候,
UpdateOperator update = new UpdateOperator();
update.Add(new SingleSelect());
update.Add(new MultiSelect());
update.Add(new Blank());
update.Add(new SingleSelect());
update.Add(new MultiSelect());
update.Add(new Blank());
可以方便把观察者(Question)和被观察者 Operator 组合起来,实现我们更新答案的功能!