• Replace Method with Method Object(以函数对象取代函数)


    重构 6.9 节中 Replace Method with Method Object(以函数对象取代函数)


    Replace Method with Method Object (以函数对象取代函数) 大家有没有什么心得!


    例如下面的代码:


    TestMethod()方法内调用了 test1() test2()这2个私有方法时,


    如果应用 Replace Method with Method Object,为保证程序的正确性,


    必须将 test1() test2() 更改成 public method 才可以。


    那么基于这样的更改,就暴露了test1() test() 方法。在这种情况下,有什么好的建议呢?

     1 
     2 public class TestClass
     3     {
     4         private void test1() { }
     5         private void test2() { }
     6 
     7         public void TestMethod()
     8         {
     9             if (true)
    10             {
    11                 //若干方法
    12                 test1();
    13             }
    14             else
    15             {
    16                 //若干方法
    17                 test2();
    18             }
    19         }
    20     }
    21 
    22 

       

    至于使用了这个 Replace Method with Method Object 方法是因为当前类包含了上千行的代码。


    该类是一个程序的主窗体。由于菜单很多,故有很多的事件代码。当然了,我已经使用 partial class 将事件代码全部分离到一个单独的文件中了。


    但是该类还是包含了 500 多行的代码。其中有2个方法各自都包含了大概70行左右的代码量。


    于是我使用了 Replace Method with Method Object,将这2个方法分离了出去。


    关于这2个方法:


    CheckLogin() 方法是验证用户的登录的。在该方法中:构造了LoginForm的一个对象,使用了匿名方法为该对象添加了按钮的点击事件。


    ChangeUser() 方法更改登录用户的。方法同上,区别在于对象按钮的事件代码的不同。


    关于LoginForm类:


    CheckLogin() && ChangeUser() 方法共用了 LoginForm 窗体。所以在 LoginForm类的实例化方法中没有添加按钮的点击事件。 

  • 相关阅读:
    NOIP201208同余方程
    NOIP模拟赛 最佳组合
    NOIP模拟赛 拓展
    CF1253E Antenna Coverage(DP)
    LOJ6033「雅礼集训 2017 Day2」棋盘游戏 (博弈论,二分图,匈牙利算法)
    CF582E Boolean Function(DP,状态压缩,FMT)
    CF750G New Year and Binary Tree Paths(DP)
    Codeforces Round 596 题解
    AGC008E Next or Nextnext(组合计数,神奇思路)
    ARC082E ConvexScore(神奇思路)
  • 原文地址:https://www.cnblogs.com/bruceleeliya/p/1611398.html
Copyright © 2020-2023  润新知