zoukankan      html  css  js  c++  java
  • 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添加新的实现的时候就不会出问题了。

  • 相关阅读:
    Application failure. hr=0x80040101:Failed to initialize virtual machine.
    windows无法配置此无线连接的无线网络
    IOS测试覆盖率生成(XCode 4.6)
    使用TopCoder的方法
    VC中自动为项目增加版本信息
    Android杂谈ListView之ArrayAdapter的使用
    Android杂谈ListView之SimpleAdapter的使用
    Android美工坊.9.png格式图片的制作与使用1
    Android杂谈layout的横竖屏处理
    Android杂谈ListView之BaseAdapter的使用
  • 原文地址:https://www.cnblogs.com/idior/p/451113.html
Copyright © 2011-2022 走看看