社区
Java
帖子详情
请问这种情况下,该使用那种设计模式?
ggzzkk
2002-11-14 11:23:59
我用SOCKET监听客户传来的消息,希望使这个服务器支持多种类型数据的传输。现在只希望可以处理文本流,但为了今后更好的扩展该系统,使它可以支持更多类型的传输,比如文本,对象或XML,请问该用那些设计模式好呢?请指教。
...全文
91
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
什么是
设计模式
?为什么要
使用
设计模式
?有什么好处?
设计模式
(Design pattern):是针对设计问题的通用解决方案。
使用
设计模式
:可以把它应用到特定的应用中,用于解决相似的问题。
使用
设计模式
是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 真正理解什么是
设计模式
,就是要透彻理解OO的四大要素:封装、继承、多态和关联。其中核心是封装的概念。 常用
设计模式
的一些优缺点 1 简单工厂模式(Static Factory Method...
面试官:谈谈Spring中用到了哪些
设计模式
?
设计模式
(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。
设计模式
是软件开发人员在软件开发过程中面临的一般问题的解决方案。 Spring 框架中广泛
使用
了不同类型的
设计模式
。 工厂模式 Spring
使用
工厂模式可以通过 BeanFactory 或 ApplicationContext 创建 bean 对象。 两者对比: BeanFactory :延迟注入(
使用
到某个 bean 的时候才会注入),相比于BeanFactory来说会占用更少的内存,程序启动速度更快。
Spring框架中都用到了哪些
设计模式
?
控制反转(IoC)和依赖注入(DI) 工厂
设计模式
单例
设计模式
代理
设计模式
代理模式在 AOP 中的应用 Spring AOP 和 AspectJ AOP 有什么区别? 模板方法 观察者模式 Spring 事件驱动模型中的三种角色 事件角色 事件监听者角色 事件发布者角色 Spring 的事件流程总结 适配器模式 spring AOP中的适配器模式 spring MVC...
Spring
使用
了哪些
设计模式
?
Spring中涉及的
设计模式
总结
面试官:“谈谈Spring中都用到了那些
设计模式
?”。
我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 41k+ Star。会一直完善下去,欢迎建议和指导,同时也欢迎Star: github.com/Snailclimb/… JDK 中用到了那些
设计模式
?Spring 中用到了那些
设计模式
?这两个问题,在面试中比较常见。我在网上搜索了一下关于 Spring 中
设计模式
的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天...
Java
50,639
社区成员
85,638
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章