oyhk学习笔记,用于记录学习的过程,还会有其他java的设计模式
对应java代码
Strategy 策略接口类
package com.pattern.startegy;/** * 定义策略接口 * @author hk * * 2012-11-27 下午12:54:29 */public interface StartegyReport { /** * 生成报表 */ public void createReport();}
Context 应用场合类
package com.pattern.startegy;/** * 应用场合 * @author hk * * 2012-11-27 下午12:56:40 */public class Context { private StartegyReport startegy;//策略接口 /** * 想生成那种报表就用那个实现类 * @param startegy */ public Context(StartegyReport startegy){ this.startegy = startegy; } /** * 生成报表 */ public void createReport(){ this.startegy.createReport(); }}
Pie 饼图实现策略接口类
package com.pattern.startegy;/** * 饼图报表实现类 * @author hk * * 2012-11-27 下午1:01:25 */public class Pie implements StartegyReport{ @Override public void createReport() { System.out.println("成功生成,饼图报表"); }}
Line 线性实现策略接口类
package com.pattern.startegy;/** * 线性报表实现类 * @author hk * * 2012-11-27 下午1:01:46 */public class Line implements StartegyReport{ @Override public void createReport() { System.out.println("成功生成,线性报表"); }}
Column 柱状实现策略接口类
package com.pattern.startegy;/** * 柱状报表实现类 * @author hk * * 2012-11-27 下午1:01:57 */public class Column implements StartegyReport{ @Override public void createReport() { System.out.println("成功生成,柱状报表"); }}
Client 客户调用类
package com.pattern.startegy;/** * 用户想生成的报表 * @author hk * * 2012-11-27 下午1:02:22 */public class Client { public static void main(String[] args) { Context lineContext = new Context(new Line());//生成线性图 lineContext.createReport(); System.out.println("-------------------------------------"); Context pieContext = new Context(new Pie());//生成饼图 pieContext.createReport(); System.out.println("-------------------------------------"); Context columnContext = new Context(new Column());//生成柱状图 columnContext.createReport(); }}
以上就是简单的策略模式的java代码实现,有不正之处,请原谅...为了学习记录而已,高内聚低偶合的特点
优点
缺点
最后运行结果
成功生成,线性报表-------------------------------------成功生成,饼图报表-------------------------------------成功生成,柱状报表
联系客服