访问者设计模式
2020-05-28 13:56:22 0 举报
访问者模式
作者其他创作
大纲/内容
ConcretModel @Override public void Accept(Action visitor) { // TODO Auto-generated method stub visitor.Visit(this); //调用action的逻辑;可在前后插入具体的特殊处理 }
ConcretAction1
+ action(Aodel):returnType
Action
+action (Model)
使用场合1:数据结构稳定,要求model稳定;2:Action强依赖了Model的细节;违反了迪米特法则;应该依赖于抽象,而不是具体的类;具体的Action可能会直接依赖具体的model
BaseModel
+ accept(Action)
ConcretAction @Override public void Visit(Element element) { // TODO Auto-generated method stub //强依赖 ConcretModelX model= ((ConcretModelX) element); todo }
处理类(连接数据模型和操作模型)
+ models:type = HashMap/List
+ add(Model)+ remove(Model)+ linkAcceptAndAction(Action)
ConcretModel2
+ attribute1:type = defaultValue+ attribute2:type
+ accept(Action) ;该种数类型的具体梳理办法;可动态插入Action的逻辑
ConcretAction2
处理类连接模型和操作 public void linkAcceptAndAction(Action visitor) { for (BaseModel model : models.values()) { model.Accept(visitor); } }
+ attribute1:type = defaultValue+ attribute2:type- attribute3:type
0 条评论
下一页