模式避免重复处理

纳比尔

我有一堂课:

public class VisitorProcessing {
    public void visit(EventA eventA){
           if(condition1....)
                // Do somethings 1
           else{
               if(condition2){
               // Do something 2
               }
               else{
               // Do something 3
               }
           } 
    }
    public void visit(EventB eventB){
           if(condition1....)
                // Do somethings 4
           else{
               if(condition2){
               // Do something 5
               }
               else{
               // Do something 6
               }
           } 
    }
    public void visit(EventC eventC){
           if(condition1....)
                // Do somethings 7
           else{
               if(condition2){
               // Do something 8
               }
               else{
               // Do something 9
               }
           } 
    }
    public void visit(EventD eventD){
           if(condition1....)
                // Do somethings 10
           else{
               if(condition2){
               // Do something 11
               }
               else{
               // Do something 12
               }
           } 
    } 
}

所有事件对象都扩展相同的父对象BasicEvent。条件仅指事件对象,可以从父事件计算得出。

我想开始进行重构以将分支的逻辑集中在一个地方,因为我不确定条件。我唯一确定的是处理“ DoSomthings ...”。

所以我正在搜索是否有任何已知的模式可以做到这一点。

提前致谢

斯蒂芬

调度方法负责方法的正确调用,您每次只需要编写3个方法即可。

public interface DoSomething {
    void doSomething1();
    void doSomething2();
    void doSomething3();
}

public class VisitorProcessing {

    public void dispatch( DoSomething ds) {
        if(condition1....)
            ds.doSomething1();
       else{
           if(condition2){
               ds.doSomething2();
           }
           else{
               ds.doSomething3();
           }
       } 
    }

    public void visit(EventA eventA){
        DoSomething ds = new DoSomething()
        {
            void doSomething1() {
             // Do somethings 1
            }
            void doSomething2(){
             // Do something 2
            }
            void doSomething3(){
             // Do something 3
            }
        }
        dispatch( ds );
    }

    public void visit(EventB eventB){
        DoSomething ds = new DoSomething()
        {
            void doSomething1() {
             // Do somethings 3
            }
            void doSomething2(){
             // Do something 4
            }
            void doSomething3(){
             // Do something 5
            }
        }
        dispatch( ds );
    }
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

模式避免重复处理

来自分类Dev

如何避免重复代码(设计模式)

来自分类Dev

有没有避免这种重复或反思的设计模式?

来自分类Dev

如何避免使用Matcher在SpaCy中重复提取重叠模式?

来自分类Dev

使用Thymeleaf和Apache Tiles时避免重复内容的模式

来自分类Dev

使用AngularJS时避免表单内容重复的模式

来自分类Dev

有没有避免这种重复或反思的设计模式?

来自分类Dev

处理程序中的Golang抽象,以避免代码重复

来自分类Dev

如何避免MediatR请求处理程序中的代码重复?

来自分类Dev

处理选择+插入以避免重复错误的正确方法

来自分类Dev

如何避免此事件处理程序中的重复代码?

来自分类Dev

NodeJS 查询处理结果设计模式避免嵌套 then 语句

来自分类Dev

重用多个值构造函数模式匹配时,避免重复代码

来自分类Dev

Json的案例类:关于在不使用外部Json Lib的情况下如何避免重复模式匹配的设计模式

来自分类Dev

Golang(初学者):避免使用重复函数来处理字符串或整数

来自分类Dev

JSP页面中的几种形式:如何避免同时重复ID和繁琐的参数处理?

来自分类Dev

为QWidget和派生类实现事件处理程序,并避免代码重复

来自分类Dev

在 Python 中进行多线程/多处理时如何避免重复结果?

来自分类Dev

避免在LINQ中重复

来自分类Dev

密码:避免重复节点

来自分类Dev

如何避免代码重复?

来自分类Dev

如何避免重复碎片?

来自分类Dev

循环避免重复代码

来自分类Dev

避免重复HTML布局

来自分类Dev

避免代码重复

来自分类Dev

如何避免重复?

来自分类Dev

避免在Maven中重复

来自分类Dev

避免克隆重复

来自分类Dev

如何避免重复?

Related 相关文章

热门标签

归档