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

  • 相关阅读:
    jQuery上传插件Uploadify使用详解
    SQL之case when then用法
    myeclipse 上安装 Maven
    ps 简介
    Linux 查看进程和删除进程
    EL表达<%@page isELIgnored="false"%>问题
    刷新本地的DNS缓存
    IDEA中 @override报错的处理步骤
    Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file
    jsp中${param.user}不解析,原样输出。
  • 原文地址:https://www.cnblogs.com/idior/p/451113.html
Copyright © 2011-2022 走看看