`
ctrain
  • 浏览: 133232 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

策略模式小练习

    博客分类:
  • J2EE
 
阅读更多
练习:
假如有若干个person对象保存在list对象之中,对它们分别用id,姓名,年龄进行排序(正序/倒序),如果年龄或者姓名重复,则按照id的升序进行排序。要求使用策略模式进行。
Person对象
public class Person {

	private int id;
	private String name;
	private int age;
	
	public Person(int id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

1、抽象策略类
public interface Strategy {
	public void sort(List<Person> list);
}


2、具体实现类(按id倒序排,其它略)
public class IdDescStrategy implements Strategy, Comparator<Person> {

	@Override
	public void sort(List<Person> list) {
		Collections.sort(list, this);
	}
	@Override
	public int compare(Person p1, Person p2) {
		return p2.getId() - p1.getId();
	}

}


3、环境类
public class Environment {

	private Strategy strategy ;
	
	public Environment(Strategy strategy) {
		this.strategy = strategy;
	}

	public void setStrategy(Strategy strategy) {
		this.strategy = strategy;
	}
	
	public void sort(List<Person> list) { 
		this.strategy.sort(list);
	}
	
}


4、客户端
public static void main(String[] args) {
		IdDescStrategy iddesc = new IdDescStrategy();
		Environment environment = new Environment(iddesc);
		List<Person> list = new ArrayList<Person>();
		Person p1 = new Person(1, "wangxiaoxiao", 10);
		Person p2 = new Person(2, "zhangshan", 20);
		Person p3 = new Person(3, "lisi", 30);
		Person p4 = new Person(4, "wangwu", 40);
		Person p5 = new Person(5, "wangke", 50);
		list.add(p1);
		list.add(p2);
		list.add(p3);
		list.add(p4);
		list.add(p5);
		environment.sort(list);
		
		for(Person p : list){
			System.out.println(p.getId()+", "+p.getName()+", "+p.getAge());
		}

	}

分享到:
评论

相关推荐

    策略模式小练习_C#策略模式_

    C#设计模式-策略模式练习,案例简单易懂,带注释

    设计模式一(单子、工厂、策略模式)练习 .zip

    设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本 7%的促销折扣;而对非教材类的计算 机...

    pattern-strategy:模式策略的练习

    模式策略“软件设计”课程的模式策略练习。 代码是完整的并且可以工作。 然而,它被要求允许用户选择不同的排序方法,应用模式策略来提供这种灵活性。

    北邮Java大作业低配版

    设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;而对非教材类的计算机图书...

    设计模式:策略模式c++代码

    策略模式简单练习代码 用vc2008编写

    北邮java选修大作业 购物车

    大作业设计模式一(单子、工厂、策略模式)练习 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;而对非教材类的计算机...

    java练习作业

    java练习作业

    吉林大学软件学院卓班设计模式第四次练习

    请使用策略模式实现。 inDir==NONE时 inDir!=NONE时 连通四个方向 各方向各25% 直行50%,左转25%,右转25% 连通往三方向 各方向各33% 可直行时,直行60%,左转(或右转)40%; 不可直行时,左转和右转各50% 连通两个...

    leetcode分类-DesignPatternAndAlgorithm:常用设计模式和算法,练习用

    行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式 1、本应用中已完成: 责任链模式 装饰模式 代理模式 单例模式 ...

    《设计模式实训教程》【PPT+类图与代码+样章】

    5.2.9策略模式实例之电影票打折 5.2.10模板方法模式实例之数据库操作 5.2.11访问者模式实例之奖励审批 5.3实训练习 第6章模式联用与综合实例实训 6.1设计模式补充知识 6.1.1反射与配置文件 6.1.2GRASP模式 ...

    head first 设计模式源代码 c++版 第一章 策略模式

    既可以加深对设计模式的理解,也顺便练习下c++. 希望这写代码也能帮助别人学习c++和设计模式. 现在只写了第一章的代码,后面的章节还在写. 要是大家对这个感兴趣,就继续上传. 代码是在linux下编写的,windows下也...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    第23章 策略(strategy)模式 204 第24章 命令(command)模式 213 第25章 解释器(interpreter)模式 221 第26章 扩展型模式介绍 236 第27章 装饰器(decorator)模式 242 第28章 迭代器(iterator)模式 259 第29章 访问者...

    C#29种设计模式实战演练

    01简单工厂模式02策略模式07代理模式08工厂方法模式14观察者模式20迭代器模式21单例模式22桥接模式27解释器模式28访问者模式附录1动物练习

    java实验:设计模式2.doc

    java实验: 设计模式(单子、工厂、策略、组合、观察者模式)练习 在上次作业基础上,设计一个贩卖各类书籍的电子商务网站的购物车系统。该系统包括 的模块有: 模块1:图书目录的添加模块,实现对书本信息的增加。 ...

    patternsExa:模式练习

    ###build 封装远离消费者构建类的知识,使用不同的策略创建复杂的对象。 ###factory 构建了一系列相关类。 ###factoryMethod 允许类请求接口的新实例,而无需类决定使用接口的哪个实现。 ###prototype 用于继承、...

    javascript 设计模式与开发实践

    2、修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。 3、移除两章很少讲授的内容:二项堆和排序网络。 4、修订了动态规划和贪心算法相关内容。 5、流网络相关材料现在基于边上的全部流。 6...

    KUKA机器人编程3-高级版-库卡8系统.pdf

    6.2 练习: 给撤回策略编程 7 模拟信号方面的工作 7.1 给模拟输入端编程 7.2 给模拟输出端编程 7.3 练习: 有关模拟输入/ 输出端方面的工作 8 外部自动运行模式的过程和配置 8.1 配置并采用外部自动运行 8.2 ...

    DesignPattern:实践 Java 设计模式

    此为练习DesignPattern的项目 使用语言: Java 7 使用测试工具: JUnit 4 使用 IDE : Eclipse Luna 图案列表: 单例模式 简单工厂模式 策略模式 装饰模式 代理模式

    数据库系统原理练习.doc

    数据库系统原理练习1 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的 括号内。错选、多选或未选均无分。 1.信息世界中的术语...

    head-first-design-patterns:Head First设计模式手册中包含的练习项目

    内容策略模式:第22页Simuduck实施策略模式:第25页设计益智练习-冒险游戏观察者模式:第60页天真气象站实施

Global site tag (gtag.js) - Google Analytics