zoukankan      html  css  js  c++  java
  • ABP文档笔记

    简介

    规约模式是一个特别的软件设计模式,业务逻辑可以使用boolean逻辑重新链接业务逻辑(维基百科).

    实践中的大部分情况,它是为实体或其它业务对象,定义可复用的过滤器.

    理解

    在查询操作中需要 提供一个逻辑运算表达式,也就是要提供一个返回布尔类型的算法函数。

    在支持lambda表达式的C#的中,这类代码写起来很方便,也很简练。

    var count = _customerRepository.Count(c => c.Balance > 100000 && c.CreationYear == 2017);
    

    但软件开发中有DRY原则,当一段逻辑在多处代码中出现时,就需要封装一下避免重复拷贝,这就是规约模式的起点。

    实现

    接口定义

    包含一个返回布尔结果的判别逻辑

    public interface ISpecification<T>
    {
        bool IsSatisfiedBy(T obj);
    }
    

    为了可以在Linq中使用, 这个接口中还要再增加一个返回表达式树的方法。

    public interface ISpecification<T>
    {
        bool IsSatisfiedBy(T obj);
    
        Expression<Func<T, bool>> ToExpression();
    } 
    

    提供一些扩展方法

    需要为这个接口提供一些扩展方法,实现And,Or,Not 和 AndNot从而可以组合规约。

  • 相关阅读:
    将博客搬至CSDN
    NOIP2018酱油记
    CF 1039D You Are Given a Tree && CF1059E Split the Tree 的贪心解法
    最大异或子序列问题
    UVa 10615
    UVa 1057
    用树状数组代替平衡树
    [CTSC2008]图腾totem
    POI2008 题解
    简便思路的题目别人的做法
  • 原文地址:https://www.cnblogs.com/wj033/p/6502238.html
Copyright © 2011-2022 走看看