visitor模式的应用
来源:互联网 发布:js颜色代码 编辑:程序博客网 时间:2024/05/22 14:36
项目中遇到这样一个问题,sip协议的消息种类很多,在不同的场景下,收到底层送上来的message时,不得不进行大量instanceof的类型判断,效率低而且不易维护,考虑到sip消息种类相对固定,可以使用visitor设计模式。
public abstract class Message { public abstract void accept(Handler h);}
public class InviteMsg extends Message {@Overridepublic void accept(Handler h) {h.handleInvite(this);}}
public class InfoMsg extends Message {@Overridepublic void accept(Handler h) {h.handleInfo(this);}}
public class ByeMsg extends Message {@Overridepublic void accept(Handler h) {h.handleBye(this);}}
public abstract class Handler { public abstract void handleInvite(Message msg); public abstract void handleBye(Message msg); public abstract void handleInfo(Message msg);}
public class SimpleCallHandler extends Handler {@Overridepublic void handleInvite(Message msg) {//do what you want for simple call}@Overridepublic void handleBye(Message msg) {//do what you want for simple call}@Overridepublic void handleInfo(Message msg) {//do what you want for simple call}}
public class GroupCallHandler extends Handler {@Overridepublic void handleInvite(Message msg) {//do what you want for group call}@Overridepublic void handleBye(Message msg) {//do what you want for group call}@Overridepublic void handleInfo(Message msg) {//do what you want for group call}}
public class ConferenceHandler extends Handler {@Overridepublic void handleInvite(Message msg) {//do what you want for conference call}@Overridepublic void handleBye(Message msg) {//do what you want for conference call}@Overridepublic void handleInfo(Message msg) {//do what you want for conference call}}
public class Client {private Handler handler;public Client(Handler handler){this.handler = handler;}public void recievedMessage(Message msg){msg.accept(handler);}}
- visitor模式的应用
- Visitor----------模式
- Visitor模式
- visitor模式
- Visitor模式
- Visitor模式
- Visitor 模式
- Visitor模式
- visitor模式
- Visitor模式
- Visitor模式
- Visitor模式
- visitor模式
- Visitor模式
- Visitor模式
- Visitor模式
- Visitor模式
- Visitor模式
- SQL用0填充5位数,类似PadLeft
- [C/C++]结构体大小的计算方法
- 编辑框传值
- XPath的相应规则
- Expert Metalink – Support Tips Tools & Resources
- visitor模式的应用
- ABAP与设计模式之策略模式
- 如何讲代码??
- seo是需要讲技术的
- 学生学籍管理系统
- 交换分区
- matlab难懂的函数
- ad-hoc connecting
- 面对百度绿萝算法再次升级SEO要做什么呢?