社区
Java
帖子详情
请问这种情况下,该使用那种设计模式?
ggzzkk
2002-11-14 11:23:59
我用SOCKET监听客户传来的消息,希望使这个服务器支持多种类型数据的传输。现在只希望可以处理文本流,但为了今后更好的扩展该系统,使它可以支持更多类型的传输,比如文本,对象或XML,请问该用那些设计模式好呢?请指教。
...全文
84
18
打赏
收藏
请问这种情况下,该使用那种设计模式?
我用SOCKET监听客户传来的消息,希望使这个服务器支持多种类型数据的传输。现在只希望可以处理文本流,但为了今后更好的扩展该系统,使它可以支持更多类型的传输,比如文本,对象或XML,请问该用那些设计模式好呢?请指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weimenren
2002-12-20
打赏
举报
回复
我以为做什么问题都不要考虑去套用什么模式,模式的东西是能在彻底的理解以后,很自然的用到解决实际方案。针对一个问题而机械的套用某种模式,你只有死的更掺。
看楼主的问题,我以为其实主要是一种参数动态话调用而已。在设计模式中工厂模式,对这方面有很好的描述。
还有其他的模式也能实现这种功能,呵呵。
lynxliu
2002-12-16
打赏
举报
回复
针对题主的问题,我觉得不需要使用设计模式。通过socket进行信息的传递,一般传递的都是存放在缓冲区里面的流数据,至于是什么数据,取决于双方的协议。也就是说,你需要设计的是一套协议(协议就得到了socket对象的句柄,与外界进行通信),然后,你需要的是一个管理和维护你的协议的对象。当然,你可以把它涉及成一个接口,然后是用不同的协议对象来实现,这些协议对象负责解读数据。然后完成对应的操作。所谓对应的操作,不过是另外一个接口里面的方法而已。此外,你需要一个元协议类,或者说一个协议类的管理类。由他来决定如何让你的接受端知道应该加栽哪一个协议类(从某种意义上说,这是一个工厂类)。收到的数据,我个人建议你直接发送到消息系统而不是和其他的系统紧密的耦合。此外,实际上传输文本已经足够了,所有的数据类型都可以通过XML转换成文本流,关键是标签的设计,此时,你就可以把传输系统稳定化,至于数据是什么,可以交给协议对象去解读。我现在关心的是如何通过XML传输可以自我描述的文本,甚至源代码,那比仅仅传输数据要有挑战性。可惜这个该死的论坛发不了UML图,要不就容易表达了。你看,这是我的设计方法。最近比较清闲,好久不来这里了,很奇怪为什么设计模式在java的版里面,似乎没有什么关系的。
jeffyan77
2002-12-14
打赏
举报
回复
嗯,我的意见和LongWayToGo和super_zzw的意见很接近,我认为应当从设计原则出发,而不是从设计模式出发,进行系统的设计。
如果凑巧,你的设计中可能会出现于某个设计模式向类似的情况,不要追求设计模式。如果您碰巧有我的书,一定要读前面的11章,才能达到超出设计模式的境界。
ggzzkk
2002-12-13
打赏
举报
回复
呵呵,这不是必须和不必须的问题了,只是单纯的从技术角度拉。
LongWayToGo
2002-12-13
打赏
举报
回复
个人意见:super_zzw(之支吾) 是对的。
没有人会因为你的软件使用了很多DP而认为它是好的产品。这是一个本末倒置的问题。
在学习了DP之后,对各种模式有一定的认识,但不是说就一定要用他们,或者说不是所有地方都要用他们。当你完成了设计,发现它是符合某个模式,并且是的确在你的项目中起到提高可重用性的作用的时候,才算是会应用DP了。
一家之言,见笑了。
jeffyan77(jeffyan77)兄,你觉得呢?:)
jeffsonxl
2002-12-08
打赏
举报
回复
我觉的用策略模式比较好
super_zzw
2002-12-07
打赏
举报
回复
就这问题不一定用设计模式
直接从各种处理里抽象出处理借口
你的所有处理都可以实现这个处理借口
当然如果以后实现了各种处理你可以对各种类型的处理用factory模式
如果处理借口变动的可能性比较大你可以用bridge模式,不过就你的问题好象变动不会太大哦1
无论用什么模式,你都必须考虑实际情况。其实大部分设计模式都是灵活运用多态、继承、和封装这3大面向对象的特性如果你熟悉它们,你可以运用他们来设计你的程序,使你的程序具有更好的可扩展性和可维护性。没有必要太拘泥于设计模式。
jeffyan77
2002-12-03
打赏
举报
回复
本书虽然没有电子版,但是作者赠送7个试读章节、全部源代码。可以在作者网站看到:
http://218.6.168.109/jeffyan77/
----------------------------------------
阎宏博士,写于纽约
《Java与模式》作者
电子信箱:javapatterns@yahoo.com
个人网站http://www.WebEndsHere.com
或者http://218.6.168.109/jeffyan77/
个人作品集http://www.yesky.com/20011108/203866.shtml
买书请到:
http://www.china-pub.com/computers/common/info.asp?id=8182
http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB07630282
http://www.cnforyou.com/query/bookdetail.asp?viBookCode=7638
chenlocus
2002-12-02
打赏
举报
回复
面向对象的设计模式,
要想成为好的系统设计师,
真的很要读一读吗?
fastmask
2002-11-18
打赏
举报
回复
jeffyan77(jeffyan77) 博士阿,你能不能给个电子版给我看看你,你总宣传你的书,但是没有见过。
hellking
2002-11-18
打赏
举报
回复
用bridge!!!!!
他可以把抽象和实现分离开,允许他们独立的变化。
应用到你的需求中在合适不过了!
jeffyan77
2002-11-18
打赏
举报
回复
关于责任链模式,请参见我的文章:
http://www.yesky.com/20020415/1606944.shtml
或者我的新书《Java与模式》
但是这并不是说,我赞成在这里使用责任链模式。
阎宏博士
ggzzkk
2002-11-16
打赏
举报
回复
to fastmask
请问责任链是什么?你可以说的详细点吗?
fastmask
2002-11-16
打赏
举报
回复
我觉得用责任链来处理不同的类型,对于以后 的扩展很方便
mem_fox
2002-11-15
打赏
举报
回复
老大的话很高深,有点不懂
happysboy
2002-11-15
打赏
举报
回复
Builder
Kaya
2002-11-15
打赏
举报
回复
推销书的吧
jeffyan77
2002-11-15
打赏
举报
回复
如果您不介意的话:
这是一个非常常见的问题,不知道多少人问过类似的问题。一般而言,这不是一个可以回答的问题;换言之,这不是一个问得恰当的问题。您应当从自己的系统需求出发,以符合OO设计原则的方式设计这个系统。
如果有巧合的话,最后的设计方案中可能会出现于某一个设计模式非常相似的情况。一个不好的,或者说错误的方法,是在一个系统设计中千方百计的套用某些设计模式,甚至以为越多越好。
在另一个thread下面,我讲了什么是模式,特别附在下面,供参考。至于OO设计原则的详细讲解,可以看我的书。
====附录:什么是模式=======
什么是模式,这是一个看上去简单,但是又非常不简单的问题。我见过很多人,学习模式理论已经很长时间了,但是并不真正理解这一点。
模式理论的基本思想其实起源于中国,是中国文化的固有思想。你,我,我们中每一个自幼受到中国思想熏陶的人,都自然具有这一基本思想。模式的思想存在于中国文化的各个角落,包括哲学、法律,医学,兵法,体育,文学,直到我们行为处事的方式。
简单地讲,所谓模式,就是得到很好研究的范例。设计模式,就是设计范例。在孙子兵法中,充斥着各种模式。孙子说,“至于死地而后生”,就是战争模式。三十六计,条条都是模式,比如“走为上”,“空城计”也都是策略模式。
这些模式中的每一个都具有典型意义,具有学习价值。通过研究这些模式,学习者可以相互交流,可以在自己的实践中举一反三,加以应用。
在我们参加高考的时候,老师给我们很多的典型题目,作为练习使用。这些题目一般来说不会在高考中原封不动地出现,但是这些题目会有一些内容启发我们的思考,可以让我们举一反三,从而为考试做好准备。
模式不是框架(Framework),也不是过程。模式也不是简单的“问题的解决方案”,因为模式必须是典型问题的解决方案,是可以让学习者举一反三的,有研究价值、有交流价值,有自己的名字的例子。
模式不能套用。不要以为在任何一个系统中都要使用某些设计模式。系统的设计也不是含有设计模式就好,更不是含有越多的设计模式就越好。
在《三国演义》中,马恕就套用了“至于死地而后生”的战争模式,最后倒了大霉。在高考中,你如果把老师交给你的典型题目答案倒背如流,在一个个放到考试卷子上去,放得越多,恐怕你就离考上大学越远。
中国传统医学也是一样,有时看上去症状相似的病,却要使用不同的处方,即所谓辨证用药。
中国古代的法律,就是案例法;也就是需要法官在研习案例的基础之上,举一反三,适当发挥。
关于模式的理论的起源、历史,以及模式理论与中国文化的渊源、哲学思想,设计模式背后的OO设计原则,二十几个设计模式的详细讲解,他们在Java语言中如何实现,如何在自己的系统设计中举一反三、推陈出新,以及Java语言本身使用了什么设计模式,可以看一看我的新书《Java与模式》(电子工业出版社出版)。
阎宏
《Java与模式》的作者
javapatterns@yahoo.com
www.WebEndsHere.com
java23种
设计模式
经典案例
讲述了java23
设计模式
的用法与什么
情况
使用
那种
设计,可以更好的开发项目
如何选择和运用
设计模式
如何选择和运用
设计模式
既然能够从众多
设计模式
中选择,那么如何识别
那种
设计模式
适合自己要解决的问题呢?要弄清楚
使用
那种
设计模式
以及如何将解决方案模版应用于具体问题中,重要的是理解一下指导方针。 1、在不了解模式的
情况
下不能运用它们。首要的是扩大自己的知识面并采用从抽象到具体的方法来学习模式和原则。实现某种模...
设计模式
之适配器模式
1,为什么要
使用
适配器
设计模式
在我们设计中常常会出现一个类所
使用
的接口与另一个类所提供的接口不一样的
情况
,那么这个时候就要用适配器
设计模式
来解决问题 如图,Client想要
使用
Adaptee的SpecificRequest()但是它只能接收Target类的Request(),那么
这种
情况
下就要
使用
适配器Adapter,使Adaptee的SpecificRequest()可以伪装成
java 单例
设计模式
使用
场景
单例
设计模式
的
使用
场景说明,优缺点,在线程中该
使用
那种
方式的单例,其中涉及到类在JVM中的分配...
设计模式
之策略模式
在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要
使用
一系列的判断语句,判断用户类型,
这种
情况
下就可以
使用
策略模式。
Java
50,129
社区成员
85,663
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章