练习:
假如有若干个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());
}
}
分享到:
相关推荐
在"策略模式小练习"中,我们可能会看到以下关键知识点: 1. **策略接口**:首先,我们会有一个策略接口,定义了所有支持的算法的公共接口。这个接口是所有具体策略类必须实现的,确保它们都有相同的操作方法。例如...
设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本 7%的促销折扣;而对非教材类的计算 机...
1. **策略模式**的学习文档,可能会通过具体的案例,如不同排序算法的实现来解释如何使用策略模式,例如快速排序、冒泡排序等。每个算法都可以作为一个策略类,而策略接口规定了算法的公共行为。 2. **工厂方法模式...
在这个"设计模式练习"中,我们主要关注的是Java编程语言中的设计模式应用。 首先,我们要了解设计模式的三大类别:创建型模式、结构型模式和行为型模式。创建型模式如单例(Singleton)、工厂方法(Factory Method...
8. **策略模式**:定义一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。 9. **模板方法模式**:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。...
- **策略模式**:定义一系列算法,并将每个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。 - **代理模式**:为其他对象提供一种代理以控制对这个对象的访问,常用于远程代理、虚拟代理等。 2. **...
在给定的“pattern-strategy”练习中,目标是实现一个系统,允许用户选择不同的排序方法,这正是策略模式的应用场景。 策略模式的核心思想是将算法的实现与使用算法的环境解耦,通过定义一个接口或抽象类来封装一...
设计模式一(单子、工厂、策略模式)练习 1. 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;而对非教材类的计算机图书...
在这个项目中,可能并未包含行为型模式,因为它们通常更复杂,且在GUI应用中可能不太常见,比如观察者模式(Observer)、策略模式(Strategy)等。 这个练习项目通过Java语言实现,说明了如何将这些设计模式应用于...
设计模式是软件工程中的一...总之,"计算机相关专业设计模式练习"是一个深入理解并熟练运用设计模式的良好机会。通过这些练习,你将能够更好地应对软件开发中的各种挑战,编写出更具灵活性、可扩展性和可维护性的代码。
《深入浅出设计模式》是一本深受欢迎的设计模式学习书籍,旨在...在阅读这本书的过程中,配合《headFirstDesignPattern》中的实例和练习,可以帮助我们更好地掌握和运用策略模式,提升我们的编程技巧和软件设计能力。
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式是通过定义一系列算法,并将每个算法封装起来,使它们可以相互替换,让算法的变化独立于使用它的客户。这个视频资料深入浅出地讲解...
大作业设计模式一(单子、工厂、策略模式)练习 假设现在要设计一个贩卖各类书籍的电子商务网站的购物车系统。对所有的教材类图书 实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣;而对非教材类的计算机...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。在策略模式中,我们创建表示各种策略的对象和一个行为根据...
在实施深度学习视域下的课后练习运用策略时,教师还需注意几点:一是源于学情的认知,重视深度解密模式,使课堂教学更有深度和思考;二是重视深度覆盖,结合学生的最近发展区,设计练习,让学生在体验中发现新知,...
【大学外语学习策略模式探讨】 大学外语学习策略模式的研究旨在改善教学方法,强化学生的自主学习能力,特别是对于大学英语教学,教师不仅要传授语言知识,还要培养学生掌握有效的学习策略。研究表明,成功的语言...
小键盘练习软件通常包含各种练习模式,如字母键、数字键、符号键的单独练习,以及混合练习,以适应不同用户的需求。练习过程中,软件会实时显示打字速度和准确率,以便用户了解自己的进步并调整练习策略。 对于收银...
请使用策略模式实现。 inDir==NONE时 inDir!=NONE时 连通四个方向 各方向各25% 直行50%,左转25%,右转25% 连通往三方向 各方向各33% 可直行时,直行60%,左转(或右转)40%; 不可直行时,左转和右转各50% 连通两个...
- **策略模式**:定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。 - **模板方法模式**:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中...
总的来说,"C/S模式练习"是一个综合性的项目,涵盖了网络通信和数据库操作两大核心技术。通过这个练习,你可以深入理解客户端如何与服务器进行交互,以及如何利用数据库存储和管理数据,这对于提升你的IT专业技能...