• 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添加新的实现的时候就不会出问题了。

  • 相关阅读:
    JSP+Ajax站点开发小知识
    JavaScript向select下拉框中加入和删除元素
    debain install scim
    Xcode 5.1.1 与 Xcode 6.0.1 共存
    Oracle集合操作函数:Union、Union All、Intersect、Minus
    8皇后-----回溯法C++编程练习
    Copy-and-swap
    Android System Property 解析
    Android 仿PhotoShop调色板应用(二) 透明度绘制之AlphaPatternDrawable
    Android 仿PhotoShop调色板应用(一)概述
  • 原文地址:https://www.cnblogs.com/idior/p/451113.html
Copyright © 2020-2023  润新知