策略模式java源代码 java策略模式优化ifelse( 三 )


}
}
}
/**
* pojo类
*
* @author remind
*
*/
public class Student {
private int id;
private String name;
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;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
import java.util.Comparator;
/**
* 比较器
*
* @author remind
*
*/
public class CompareUtils implements ComparatorStudent {
@Override
public int compare(Student o1, Student o2) {
return (o1.getId()o2.getId()) ? 1 : (o1.getId() == o2.getId()) ? 0 : -1;
}
}
设计模式 - 策略模式简单的来个例子
我们现在有一个事件 ,ChatEvent, 但是事件类型有很多 , 比如连接服务器事件, 接收信息时间, 异常事件, 断开服务器事件 , 还有很多事件, 但是我们如果采用if语句进行判断, 确实很难维护,代码感官不好
下面演示常见模拟
ChatEvent事件
ChatEventListener事件监听器
ChatEventHandler事件处理器
我们发现一堆ifelse, 或者switch..case语句时让别人看源码发现 , 这个水平也太垃圾了吧 , 就这么写 , 哎 , 所以此时我们就引入了我们的
ChatEventHandler接口类 , 我们将他实现成各种事件的Handler , 比如ClientReadChatEventHandler,ClientShutDownChatEventHandler等等之类的 .
此时我们只需要维护我们这些拓展的ChatEventHandler的实现类 , 那么我们该怎么维护呢, 此时我们选择Java提供的HashMap, 此时我们只需要一个这个就行了
此时我们的代码就会变成
此时我们只需要拓展我们的handler , 就可以实现, 各种情况, 这种对于整体的拓展性也提高了, 同时代码的耦合度也大大降低 ,我们只需要维护我们的EventType,Map,EventHandler三者关系 , 中间只有Map进行桥接 , 这就是桥接模式, 同时我们的拓展点只是我们的各种Handler 就行了 .
策略模式java源代码的介绍就聊到这里吧 , 感谢你花时间阅读本站内容 , 更多关于java策略模式优化ifelse、策略模式java源代码的信息别忘了在本站进行查找喔 。

推荐阅读