`
ctrain
  • 浏览: 135464 次
  • 性别: 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#策略模式_

    在"策略模式小练习"中,我们可能会看到以下关键知识点: 1. **策略接口**:首先,我们会有一个策略接口,定义了所有支持的算法的公共接口。这个接口是所有具体策略类必须实现的,确保它们都有相同的操作方法。例如...

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

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

    策略模式工厂方法模式观察者模式

    1. **策略模式**的学习文档,可能会通过具体的案例,如不同排序算法的实现来解释如何使用策略模式,例如快速排序、冒泡排序等。每个算法都可以作为一个策略类,而策略接口规定了算法的公共行为。 2. **工厂方法模式...

    设计模式练习,很有感触

    在这个"设计模式练习"中,我们主要关注的是Java编程语言中的设计模式应用。 首先,我们要了解设计模式的三大类别:创建型模式、结构型模式和行为型模式。创建型模式如单例(Singleton)、工厂方法(Factory Method...

    python设计模式-练习代码

    8. **策略模式**:定义一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。 9. **模板方法模式**:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。...

    软件设计模式与体系结构练习题

    - **策略模式**:定义一系列算法,并将每个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。 - **代理模式**:为其他对象提供一种代理以控制对这个对象的访问,常用于远程代理、虚拟代理等。 2. **...

    pattern-strategy:模式策略的练习

    在给定的“pattern-strategy”练习中,目标是实现一个系统,允许用户选择不同的排序方法,这正是策略模式的应用场景。 策略模式的核心思想是将算法的实现与使用算法的环境解耦,通过定义一个接口或抽象类来封装一...

    北邮Java大作业低配版

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

    多种设计模式综合练习

    在这个项目中,可能并未包含行为型模式,因为它们通常更复杂,且在GUI应用中可能不太常见,比如观察者模式(Observer)、策略模式(Strategy)等。 这个练习项目通过Java语言实现,说明了如何将这些设计模式应用于...

    计算机相关专业设计模式练习

    设计模式是软件工程中的一...总之,"计算机相关专业设计模式练习"是一个深入理解并熟练运用设计模式的良好机会。通过这些练习,你将能够更好地应对软件开发中的各种挑战,编写出更具灵活性、可扩展性和可维护性的代码。

    《深入浅出设计模式》读书笔记--策略模式与三个设计原则

    《深入浅出设计模式》是一本深受欢迎的设计模式学习书籍,旨在...在阅读这本书的过程中,配合《headFirstDesignPattern》中的实例和练习,可以帮助我们更好地掌握和运用策略模式,提升我们的编程技巧和软件设计能力。

    java模式设计视频资料2(策略模式)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式是通过定义一系列算法,并将每个算法封装起来,使它们可以相互替换,让算法的变化独立于使用它的客户。这个视频资料深入浅出地讲解...

    北邮java选修大作业 购物车

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

    设计模式练习.rar设计模式练习.rar

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。在策略模式中,我们创建表示各种策略的对象和一个行为根据...

    深度学习视野下的统编版语文教材课后练习运用策略.pdf

    在实施深度学习视域下的课后练习运用策略时,教师还需注意几点:一是源于学情的认知,重视深度解密模式,使课堂教学更有深度和思考;二是重视深度覆盖,结合学生的最近发展区,设计练习,让学生在体验中发现新知,...

    大学外语学习策略模式探讨.docx

    【大学外语学习策略模式探讨】 大学外语学习策略模式的研究旨在改善教学方法,强化学生的自主学习能力,特别是对于大学英语教学,教师不仅要传授语言知识,还要培养学生掌握有效的学习策略。研究表明,成功的语言...

    小键盘指定练习软件

    小键盘练习软件通常包含各种练习模式,如字母键、数字键、符号键的单独练习,以及混合练习,以适应不同用户的需求。练习过程中,软件会实时显示打字速度和准确率,以便用户了解自己的进步并调整练习策略。 对于收银...

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

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

    java23中设计模式练习源码

    - **策略模式**:定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户。 - **模板方法模式**:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中...

    C/S模式练习

    总的来说,"C/S模式练习"是一个综合性的项目,涵盖了网络通信和数据库操作两大核心技术。通过这个练习,你可以深入理解客户端如何与服务器进行交互,以及如何利用数据库存储和管理数据,这对于提升你的IT专业技能...

Global site tag (gtag.js) - Google Analytics