• Constains Something i want


    Something i Want

    如果你经常重构的话,那么你会发现Extract Method是一个常用的方法,并且随着你不断的Extract

    Method,渐渐的你的代码种就会浮现出Template Method模式。

    以下就是一个Template Method的示例

    abstract class CheckBackground
    {

        protected abstract void CheckBank();
        protected abstract void CheckCredit();
        protected abstract void CheckLoan();
        protected abstract void CheckStock();
        protected abstract void CheckIncome();

        //work as template method
        public void Check()
        {
            CheckBank();
            CheckCredit();
            CheckLoan();
            CheckStock();
            CheckIncome();
        }
    }

    用abstract class来实现Template Method是一种比较好的方法,但是相对于abstract class而言interface是更常用的定义contract的方式。但是interface却要求所有的方法都是public,而Template Method中包含的其他方法往往是private和protected的。

    那么我就希望有一种机制可以保证Template Method能够被安全的实现。
    利用constains关键字来定义某个方法中需要包含的方法以及它们出现的顺序
    constains CheckConstains
    {
         void CheckBank();
         void CheckCredit();
         void CheckLoan();
         void CheckStock();
         void CheckIncome();
    }

    public interface ICheckBackground
    {
        [CheckConstains]
        void Check();
    }


    作为程序员,在编程的时候最怕的是要记住某些上下文,才能把代码正确的写出来,这样是很不可靠的。
    我们当然希望在编程的时候需要记住的东西越少越好,而Template Method模式的应用又是如此的广泛,所以我觉得需要以上这种约束, 这样在以后为ICheckBackground添加新的实现的时候就不会出问题了。

  • 相关阅读:
    图像轮廓缺陷修补
    VS2005,VS2008,VS2010工程文件和解决方案的区别
    MFC中调用WPF教程
    Code::Blocks与wxWidgets安装配置——基于C++的免费IDE开发平台
    kalman 滤波 演示与opencv代码
    Predator:比微软Kinect更强的视频追踪算法来自捷克博士论文
    二值图像轮廓提取
    有用网址
    如何在Rich Edit Control中管理超链接
    坐标轴的平移与旋转
  • 原文地址:https://www.cnblogs.com/idior/p/451113.html
Copyright © 2020-2023  润新知