package 设计模式.策略模式; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; /** * @deprecated 通过实现Comparator接口实现排序(策略模式) * * * */ public class Person implements Comparator<Person>{ private int id; private String name; private int age; public int getId() { return id; } @Override public int hashCode() { return this.name.hashCode(); } @Override public boolean equals(Object obj) { Person person=(Person)obj; if(this.id==person.getId()){ if(this.hashCode()==person.hashCode()){ return true; } } return false; } 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; } @Override public int compare(Person o1, Person o2) { // TODO Auto-generated method stub o1=(Person)o1; o2=(Person)o2; if(o1.getId()<o2.getId()){ return -1; }else if(o1.getId()==o2.getId()){ if(o1.getName().compareTo(o2.getName())<0){ return -1; } else if(o1.getName().compareTo(o2.getName())>0){ return 1; }else { return 0; } } return 1; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; } public Person() { super(); // TODO Auto-generated constructor stub } public Person(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } public static void main(String[] args) { Person person1=new Person(1, "张三", 21); Person person2=new Person(2, "王五", 33); Person person3=new Person(3, "张三", 21); Person person4=new Person(3, "王五", 21); List<Person> list=new ArrayList<Person>(); list.add(person1); list.add(person2); list.add(person3); list.add(person4); Collections.sort(list, new Person()); Iterator<Person> iterator=list.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next().toString()); } } }
java策略模式,Comparator
原创matengbing 博主文章分类:java ©著作权
文章标签 java 策略模式 Comparator 文章分类 Java 后端开发
-
设计模式-策略模式
设计模式之策略模式
策略模式 设计模式 -
行为设计模式-策略模式的优缺点
优点-各自使用封装的算法,可以容易地引入新的算法来满足相同的接口-算法的细节完全封装在 Strategy 类中,因此可以在不影响 Context 类的情况下更改算法的实现-由于实现的是同一个接口,所以策略之间可以自由切换缺点:-客户端必须知道所有的策略,了解它们之间的区别,以便选择恰当的算法
设计模式 行为设计模式-策略模式 C++类与对象 C++继承与多态 C++析构函数 -
java 状态模式和策略模式 java策略模式
策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
java 状态模式和策略模式 java策略模式 简书 策略模式 客户端 封装 -
java 策略模式下单 java策略设计模式
Demo源码见Saul’s Github策略模式(strategy pattern)1. 定义(Definition)策略模式(Strategy)属于对象行为型设计模式,主要是定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法 在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算 法,可以理解为不同的业务处理方法。
java 策略模式下单 java设计模式 策略模式 Strategy pattern TreeSet 设计模式