zoukankan      html  css  js  c++  java
  • DSL Boo完整实例

    DSL

    image

    Model

    clip_image004

    对应的DSL内容

    treatment of default_customer
    upon bad_credit:
    authorize_funds cart.Total,  "We require full authorization of the amount in low credit rating scenarios"

    define preferred_customer:
    customer.TotalPurchaseAmount > 5000
    define default_customer:
    customer.TotalPurchaseAmount <= 5000

    treatment of preferred_customer
    upon bad_credit:
    authorize_funds cart.Total * 0.5,  "For preferred customers we only authorize half the amount"
    upon cart_update:
    when cart.Total > 1000:
    add_cart_discount 5, "Preferred members gets 5% discount for orders over 1,000$"

    DSL集成

    // create the actual policies
    var policies = new CustomerPolicies("Scripts");
    // get a policy for this customer
    AbstractCustomerPolicy policy = policies.For(preferredCustomer);
    Console.WriteLine("Selected policy for {0}: {1} ",
                      policy.CustomerSpecification,
                      policy);
    // somehow here we derive what our current state is...
    // check if customer have treatment for the bad credit state
    if (policy.HasTreatmentFor(States.BadCredit) == false)
    return;
    // get the treatment to apply
    Treatment treatment = policy.TreatmentForState(States.BadCredit);
    Console.WriteLine("Treatment for bad credit is: {0}", treatment.Description);
    // execute the treatment on the shopping cart view
    treatment.Execute(shoppingCart.GenerateView());

    关于这个例子的详细内容可以参考 http://www.cnblogs.com/2018/category/399342.html 阅读相关的图书

  • 相关阅读:
    笔记44 Hibernate快速入门(一)
    tomcat 启用https协议
    笔记43 Spring Security简介
    笔记43 Spring Web Flow——订购披萨应用详解
    笔记42 Spring Web Flow——Demo(2)
    笔记41 Spring Web Flow——Demo
    Perfect Squares
    Factorial Trailing Zeroes
    Excel Sheet Column Title
    Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/2018/p/2623627.html
Copyright © 2011-2022 走看看