从一个工程实例讲讲我理解的设计模式
(2010-07-13 22:47:24)
标签:
设计模式
实例
it
这是一个五张牌的游戏(俺小时候发明的,嘻嘻)。那么用程序将其实现,用到的设计模式,整理如下:
1:观察者模式。也叫发布订阅模式。比如N个人一起打牌,共连一个服务器。每个人都算一个客户端,那么每个客户端都向服务端订阅消息。服务端一接收到某人打出的牌,就会将数据更新到每一个客户当中。如果途中某个人不打了,点击退出或逃跑,那么将取消订阅。伺候服务端就不为他更新消息了。
2:state模式。也叫状态机模式。这是我很多系统设计中用到的模式。在服务端的设计中,必然会有很多的状态,比如洗牌状态,发牌状态,接受客户端信息状态,更新客户端信息状态,最后一轮状态,结束状态。每个状态之间根据不同条件会产生不同的跳转。
3:bridge模式。将一维的耦合化为二维来拆分。比如每张牌都有两个属性,一个是数值,一个是花色。当数值相同的时候,可能还有比较花色的大小。那么可以定义一个数值类,一个花色类。
注意:我这个牌花色不是很重要。如果某些玩法花色很重要,比如升级。那么编升级最好的方式是要将花色的属性拿掉,而多定义四种类:红桃牌类,黑桃牌类,梅花牌类,方片牌类。一旦有这四种牌,那么洗牌之后,最好用工厂模式来生成众多的牌类!
所以记住:以后编程,能想着将属性剥离,用多个类来代替,将是升华你面向对象的思想的一