练习:
假如有若干个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#设计模式-策略模式练习,案例简单易懂,带注释
设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本 7%的促销折扣;而对非教材类的计算 机...
模式策略“软件设计”课程的模式策略练习。 代码是完整的并且可以工作。 然而,它被要求允许用户选择不同的排序方法,应用模式策略来提供这种灵活性。
设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;而对非教材类的计算机图书...
策略模式简单练习代码 用vc2008编写
大作业设计模式一(单子、工厂、策略模式)练习 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;而对非教材类的计算机...
java练习作业
请使用策略模式实现。 inDir==NONE时 inDir!=NONE时 连通四个方向 各方向各25% 直行50%,左转25%,右转25% 连通往三方向 各方向各33% 可直行时,直行60%,左转(或右转)40%; 不可直行时,左转和右转各50% 连通两个...
行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式 1、本应用中已完成: 责任链模式 装饰模式 代理模式 单例模式 ...
5.2.9策略模式实例之电影票打折 5.2.10模板方法模式实例之数据库操作 5.2.11访问者模式实例之奖励审批 5.3实训练习 第6章模式联用与综合实例实训 6.1设计模式补充知识 6.1.1反射与配置文件 6.1.2GRASP模式 ...
既可以加深对设计模式的理解,也顺便练习下c++. 希望这写代码也能帮助别人学习c++和设计模式. 现在只写了第一章的代码,后面的章节还在写. 要是大家对这个感兴趣,就继续上传. 代码是在linux下编写的,windows下也...
第23章 策略(strategy)模式 204 第24章 命令(command)模式 213 第25章 解释器(interpreter)模式 221 第26章 扩展型模式介绍 236 第27章 装饰器(decorator)模式 242 第28章 迭代器(iterator)模式 259 第29章 访问者...
01简单工厂模式02策略模式07代理模式08工厂方法模式14观察者模式20迭代器模式21单例模式22桥接模式27解释器模式28访问者模式附录1动物练习
java实验: 设计模式(单子、工厂、策略、组合、观察者模式)练习 在上次作业基础上,设计一个贩卖各类书籍的电子商务网站的购物车系统。该系统包括 的模块有: 模块1:图书目录的添加模块,实现对书本信息的增加。 ...
###build 封装远离消费者构建类的知识,使用不同的策略创建复杂的对象。 ###factory 构建了一系列相关类。 ###factoryMethod 允许类请求接口的新实例,而无需类决定使用接口的哪个实现。 ###prototype 用于继承、...
2、修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。 3、移除两章很少讲授的内容:二项堆和排序网络。 4、修订了动态规划和贪心算法相关内容。 5、流网络相关材料现在基于边上的全部流。 6...
6.2 练习: 给撤回策略编程 7 模拟信号方面的工作 7.1 给模拟输入端编程 7.2 给模拟输出端编程 7.3 练习: 有关模拟输入/ 输出端方面的工作 8 外部自动运行模式的过程和配置 8.1 配置并采用外部自动运行 8.2 ...
此为练习DesignPattern的项目 使用语言: Java 7 使用测试工具: JUnit 4 使用 IDE : Eclipse Luna 图案列表: 单例模式 简单工厂模式 策略模式 装饰模式 代理模式
数据库系统原理练习1 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的 括号内。错选、多选或未选均无分。 1.信息世界中的术语...
内容策略模式:第22页Simuduck实施策略模式:第25页设计益智练习-冒险游戏观察者模式:第60页天真气象站实施