当前位置:  技术问答>java相关

设计模式一问

    来源: 互联网  发布时间:2015-07-14

    本文导语:  假设一个Socket的例子: 多客户端通过服务器进行各种消息的交流 客户端发送的消息有以下几种:登录消息(LoginMsg),注册消息(RegMsg),系统事件消息(SysMsg),文本交谈消息(TxtMsg)等等消息,还可能有图像,视频,音频等消...

假设一个Socket的例子:
多客户端通过服务器进行各种消息的交流
客户端发送的消息有以下几种:登录消息(LoginMsg),注册消息(RegMsg),系统事件消息(SysMsg),文本交谈消息(TxtMsg)等等消息,还可能有图像,视频,音频等消息..
创建一个Msg抽象类,以上消息作为它的子类,用一个工厂类产生消息MsgFactory,
问题是服务器接收到各种不同的消息,我想让它自动调用不同的操作,而不是用一大段switch语句判断消息的类型,然后再调用相应的操作,比如:
对LoginMsg,送到一个验证类进行验证,
对RegMsg,写入到数据库
对SysMsg,写入到日志和发送到每个客户端
对TxtMsg,发送给给定的客户端,
....
请问要用什么模式来设计

|
public interface Msg{
   void acceptVisitor(MsgVisitor v);
}
public interface MsgVisitor{
   void visitLoginMsg(...);
   void visitRegMsg(...);
   void visitTxtMsg(...);
   void visitSysMsg(...);
}
class LoginMsg implements Msg{
    public void acceptVisitor(MsgVisitor){v.visitLoginMsg(...);}
    ...
}
class SysMsg implements Msg{
    public void acceptVisitor(MsgVisitor){v.visitSysMsg(...);}
    ...
}
...

|
没那么麻烦,利用方法的过载(overload)就行了.
例如:
void processMsg(LoginMsg lm){
   ...
}

void processMsg(RegMsg rm){
  ...
}
...

|
肯定要抽象消息Message,然后用一个Facade设计模式。

|
可以考虑使用proxy设计模式

|
在msg中定义应该调用的操作不是挺好的么。利用msg的多态。
abstract public void execute(Context con)

有点像command模式。

|
visitor 也可以,但偶认为,在这里visitor一方的类继承结构不复杂,基本上只有一个类。似乎没有必要用visitor这么强的东东。

|
我对设计模式不熟,书才看了几业,不过看完你的要求之后,就冒出来两个字“多态”,具体怎么设计向高人学习。
关注

    
 
 

您可能感兴趣的文章:

  • GOF设计模式简介- 责任链模式
  • Java设计模式之适配器模式简介
  • C#设计模式之外观模式介绍
  • Java设计模式之创建者模式简介
  • Java设计模式之中介者模式(Mediator Pattern)简介
  • Java设计模式之责任链模式简介
  • php设计模式之命令模式使用示例
  • 起个贴子,大家伙来归纳一下Java本身设计中的设计模式
  • 各位,市面上有什么设计模式的书么
  • C++设计模式之工厂方法模式
  • linux网络编程(UDP多播)如何实现Observer设计模式?
  • 讨论facade设计模式。
  • 哪里有《设计模式》中文电子版书
  • 大家可以探讨一下Servlet的设计模式么?
  • 设计模式怎么放到Java类里面???
  • 设计模式是怎样产生的?
  • 请问什么是“设计模式”,有这方面的教材吗?望各位大侠指点指点初学者。谢谢!
  • 在EJB中如何应用设计模式?
  • 【一周话题】请大家介绍一下关于设计模式的实际应用例子
  • C++设计模式类库 Loki
  • 谁有《设计模式》中文电子书?
  • 求设计模式 电子书 高分
  • 如何实现非电子商务的设计模式(不要web层)
  • 在哪可以下载完整的《设计模式》??
  • 哪里有java版的设计模式的电子书下载?
  • 《j2ee设计模式》这本书那有买的?
  • 请问那里有关于设计模式的完整的书下载!!!!
  • 谁有Design Patterns Explained (设计模式精解)这本书的电子版?谢谢!!
  • 讨论:数据库操作的设计模式
  • 哪有java版的设计模式方面的书可以下载呀?材料也可以呀
  • EJB设计模式-----调查受欢迎的程度
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php设计模式之单例模式使用示例
  • java设计模式之单例模式学习
  • Java设计模式之Iterator模式介绍
  • Python设计模式之代理模式实例
  • 用代码和UML图化解设计模式之桥接模式的深入分析
  • C++设计模式之原型模式
  • Java设计模式之模版方法模式简介
  • C++设计模式之状态模式
  • linux网络编程(UDP多播)如何实现Observer设计模式? iis7站长之家
  • Java设计模式之装饰者模式详解和代码实例
  • C++设计模式之命令模式
  • C# 设计模式之Abstract Factory 抽象工厂(概念)
  • java设计模式之装饰模式详细介绍
  • PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
  • C++设计模式之观察者模式
  • C++设计模式之策略模式
  • Think in Patterns问题求解一,设计模式达人入
  • C# 设计模式之Singleton单例模式
  • C++设计模式之模板方法模式
  • Python设计模式之观察者模式实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3