上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 18 下一页

2012年5月29日

摘要: 我们如何知道软件设计的优劣呢?以下是一些拙劣设计的症状,当软件出现下面任何一种气味时,就表明软件正在腐化。僵化性(Rigidity):很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动。脆弱性(Fragility):对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。牢固性(Immobility):很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。粘滞性(Viscosity):做正确的事情比做错误的事情要困难。不必要的复杂性(Needless Complexity):设计中包含有不具任何直接好处的基础结构。不必要的重复(Needless Repetit 阅读全文
posted @ 2012-05-29 13:32 很多不懂呀。。 阅读(281) 评论(0) 推荐(0) 编辑
摘要: “面向对象软件设计”这个术语及其相关话题对于很多开发人员来说已经是耳熟能详了,甚至听腻了。但是,对不住各位,为了吸引眼球和引起“异性” 注意,本座还是落入俗套选择这个热门话题作为本博客的开张炒作篇目。请见谅,也希望各位看官能放下架子,略读一下本系列的所有文章再喷,可赞可弹可BS, 但勿吐槽,毕竟不想因为本座的文字噪音降低看官的SZ,伤不起呀!! 言归正传,在如何阐述“面向对象软件设计”这个问题上,本座琢磨了良久,毕竟命题宽泛,表达方式和层次多样。最终决定用相对通俗,以本座的读书和工作经历,在中等层次上进行阐述。 本座从十年多前走出校门之时就确信软件架构(设计)、数据结构和算法是软件的根本核.. 阅读全文
posted @ 2012-05-29 13:30 很多不懂呀。。 阅读(271) 评论(0) 推荐(0) 编辑

2012年5月28日

摘要: 简单工厂:严格说并不是一个设计模式。简单工厂没有抽象类,只有一个具体工厂类如MyFactory,然后MyFactory里面有个工厂方法CreateProduct返回一个基类产品,具体返回什么具体实例通过传入参数然后用case判断。用手机生产做个例子:比如Nokia简单工厂就是只有NokiaFactory工厂类,工厂方法就是CreateNokiaPhone,参数是Nokia手机型号,根据不同型号创建不同的Nokia手机(使用case)。很明显的缺点就是Nokia每发明一个新型号的手机都需要修改简单工厂类(增加case判断),违反了封闭修改,开放扩展原则。工厂方法:该模式有一个抽象基类和若干个派生 阅读全文
posted @ 2012-05-28 09:53 很多不懂呀。。 阅读(699) 评论(1) 推荐(0) 编辑

2012年5月26日

摘要: 一.简单工厂模式又称静态工厂方法模式(Static Factory Method),它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。1.静态工厂方法统一管理对象的创建。静态工厂方法通过传入的参数判断决定创建哪一个产品的实例,封装了对象的创建,客户端只管消费,实现了对责任(模块)的分割。2.静态工厂方法推迟了产品的实例化。通过XML配置文件就能改变具体要创建的产品实例,修改为其它的产品实例,代码不须重新编译。二.简单工厂模式还是有缺点的,后面的工厂方法模式和抽象工厂模式就是对这些缺点的改善。讲完了这三种模式将会有一个对比。以下以Nokia手机为例,采用简单工 阅读全文
posted @ 2012-05-26 23:55 很多不懂呀。。 阅读(261) 评论(1) 推荐(0) 编辑
摘要: C++是一款应用非常广泛的计算机编程语言。它支持多种程序设计风格,其中包括对面向对象设计的支持。今天为大家介绍的C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。C++单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很不优雅。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有静态方法获取该实例。如下面的类定义:classCSingleton: { //其它成 阅读全文
posted @ 2012-05-26 01:44 很多不懂呀。。 阅读(635) 评论(0) 推荐(0) 编辑

2012年5月25日

摘要: 在浅(1)中,关于游戏世界管理模块和通讯模块我没有详细说明,本篇中将补充介绍。游戏世界管理模块: 本模块专门管理游戏世界里的数据模型,也就意味着,所有游戏里的对象基本上都由他来管理所以,此模块极为复杂,甚至在大型系统里,也可以把它再划分成很多子模块来协同工作。 这个模块该怎么封装呢?首先,自然是需要一个消息处理类,因为游戏世界管理模块同样是需要消息驱动的,此模块每收到一个消息后,就察看消息类型,看是转发类型还是管理类型的消息,如果是转发类型,就将消息转发给消息目的地模块,如果是管理类型的消息,就察看管理的目标以及管理的方法,然后执行管理方法。因此,我们还需要的就是一个辨别消息的方法,以及一.. 阅读全文
posted @ 2012-05-25 18:27 很多不懂呀。。 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 本游戏服务器端操作系统采用UNIX,因为UNIX是标准的服务器操作系统,可保证网络游戏的稳定性。因此,以下所有的编程都将针对UNIX进行。 服务器端的整体构架如下:通讯模块,消息传递模块,游戏规则模块,线程管理模块,游戏世界管理模块。 通讯模块: 通讯模块主要实现与客户端的通讯功能,实际上,通讯模块就是对套结字Socket的封装。Socket是UNIX下的网络通讯基础,对于一个Socket我们可以对其进行读写操作,读入的数据来自客户端,写入的数据可供客户端读取。 Socket主要有阻塞套接字和无阻塞套接字两种,对于无阻塞套结字,每次读写后,不管读写的字节数是否达到要求,都立即返回;而对于... 阅读全文
posted @ 2012-05-25 18:26 很多不懂呀。。 阅读(556) 评论(0) 推荐(0) 编辑
摘要: MMORPG不同于其它的局域网的网络游戏,它是一个面向整个Internet的连接人数过万的网络游戏,因此他的服务器端设计则极为重要服务器的基本设置 在大型网络游戏里,通常设计为C/S结构,客户端不再对数据进行逻辑处理,而只是一个收发装置,从玩家那里接受到操作信息,然后反馈给服务器,再由服务器进行处理后发回客户端,经客户端通过图形化处理,给玩家呈现出一个缤纷的游戏世界。登陆服务器 在这里也可以称之为连接服务器,网络游戏的客户端一般是连接到这里,然后再由该连接服务器根据不同的需要,把游戏消息转发给其它相应的服务器(逻辑和地图服务器)也因为它是客户端直接连接的对象,它同时也负担了验证客户身份的工.. 阅读全文
posted @ 2012-05-25 18:24 很多不懂呀。。 阅读(568) 评论(0) 推荐(0) 编辑
摘要: 狭义的游戏对象是指游戏世界中所能看到及可交互的对象,如玩家、怪物、物品等,我们这里也主要讨论这类对象在服务器上的组织及实现。 在大部分的MMOG中,游戏对象的类型都大同小异,主要有物品、生物、玩家等。比如在wow中,通过服务器发下来的GUID我们可以了解到,游戏中有9大类对象,包括物品(Item)、背包(Container)、生物(Unit)、玩家(Player)、游戏对象(GameObject)、动态对象(DynamicObject)、尸体(Corpse)等。 在mangos的实现中,对象使用类继承的方式,由Object基类定义游戏对象的公有接口及属性,包括GUID的生成及管理、构造及更.. 阅读全文
posted @ 2012-05-25 18:15 很多不懂呀。。 阅读(870) 评论(0) 推荐(0) 编辑
摘要: 关于登录服、大区服及游戏世界服的结构之前已做过探讨,这里再把各自的职责和关系列一下。 GateWay/WorldServer GateWay/WodlServer LoginServer LoginServer DNSServer WorldServerMgr | | | | | --------------------------------------------------------------------------------------------- | | | internet | clients其中DNSServer负责带负载均衡的域名解析服务,返回LoginServer的I 阅读全文
posted @ 2012-05-25 18:14 很多不懂呀。。 阅读(749) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 18 下一页

导航