其它模式:
   
         一.Strategy Pattern(策略模式)
         二.Template Method Pattern(模版方法模式)
         三.Bridge Pattern(橋接模式)
         四.Visitor Pattern(觀察者模式)
         五.Action Pattern(命令模式)   

         六.(Observer Pattern)观察者模式   

 

设计模式,还没写完,今天有些空,接着写。

   今天看看观察模式。最近在帮公司做个考试系统。我们知道,考试有单选,多选,填空等等。。。分别视为一个对象的话,那对这个对象,就会有很多操作?

 

 QuestionBase
    {
        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操作。

然后,我们观察者,既发出操作的对象。

 

 OperateBase
    {
        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());

可以方便把观察者(Question)和被观察者 Operator  组合起来,实现我们更新答案的功能!

   

相关文章:

猜你喜欢
  • 2021-09-05
  • 2021-05-27
  • 2021-10-17
  • 2021-12-24
  • 2021-11-30
相关资源
相似解决方案