模式6-替代模板方式模式
来源:互联网 发布:云计算和超级计算机 编辑:程序博客网 时间:2024/05/01 01:03
目的: 替代模板方式模式(模板方式模式-指定算法大致轮廓,并让调用者完成对某些细节的插入)模板方法模式定义了一个算法的步骤,并允许次类别为一个或多个步骤提供其实践方式。让次类别在不改变算法架构的情况下,重新定义算法中的某些步骤。在软件工程中,它是一种软件设计模式,和C++模板没有关连。(ns org.liango.oo.template.制作评分报表)(defn make-grade-report { :doc "制作评分报表" } [num-to-letter print-grade-report] (fn [grades] (print-grade-report (map num-to-letter grades))) );; 1(defn num-to-letter { :doc "评分转换" } [n] (cond (and (<= n 5.0) (> n 4.0)) "A" (and (<= n 4.0) (> n 3.0)) "B" (and (<= n 3.0) (> n 2.0)) "C" (and (<= n 2.0) (> n 0.)) "D" (= n 0) "F" :else "NaN" ) )(defn print-grade-report { :doc "分组打印直方图" } [grades] (let [grouped-arrs (group-by identity grades) grade-count-map (sort (map (fn [[one-of-grouped-arr grouped-arr]] [one-of-grouped-arr (count grouped-arr)]) grouped-arrs)) ] (doseq [[grade count] grade-count-map] (println (str grade " : " (apply str (repeat count "*")))) ) ) );; test1(def grades [5.0 4.0 4.4 2.2 3.3 3.5])(def full-grade-report (make-grade-report num-to-letter print-grade-report))(full-grade-report grades);;=>输出;;A : **;;B : ***;;C : *;; 2 换一种细节插入(defn num-to-letter-2 { :doc "评分转换" } [n] (cond (and (<= n 5.0) (> n 4.7)) "A" (and (<= n 4.7) (> n 4.3)) "A-" (and (<= n 4.3) (> n 4.0)) "B+" (and (<= n 4.0) (> n 3.7)) "B" (and (<= n 3.7) (> n 3.3)) "B-" (and (<= n 3.3) (> n 3.0)) "C+" (and (<= n 3.0) (> n 2.7)) "C" (and (<= n 2.7) (> n 2.3)) "C-" (and (<= n 2.3) (> n 0)) "D" (= n 0) "F" :else "NaN" ) )(defn print-grade-report-2 { :doc "依次打印" } [grades] (doseq [grade grades] (println "grade is" grade)) )(def full-grade-report-2 (make-grade-report num-to-letter-2 print-grade-report-2))(full-grade-report-2 grades);;=>输出;;grade is A;;grade is B;;grade is A-;;grade is D;;grade is C+;;grade is B-
0 0
- 模式6-替代模板方式模式
- 设计模式--模板方式模式
- 模板方式模式
- 设计模式之模板方式模式
- 设计模式之模板方式
- 设计模式随笔-模板方式
- JAVA设计模式之模板方式
- day06-2设计模式-单例模式,模板方式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- 模板模式
- redis做DB缓存mysql做冗余数据库,memcached主备存储session下的集群高可用方案
- 设计模式学习笔记十四:适配器模式
- JAVA笔记之数组
- Delphi调用C#编写的WebService返回空值
- Leetcode #64 Minimum Path Sum
- 模式6-替代模板方式模式
- VIM 编辑器
- 测试server是否block port或者网站
- hdu 2399 GPA
- 树的先序、中序、后序遍历非递归实现
- 在eclipse下配置maven
- 本地自旋锁与信号量/多服务台自旋队列-spin wait风格的信号量
- associative
- hdu 1328 IBM Minus One