程序设计模式浅析(plain framework商业版设计模式)
程序设计其实对程序开发者来说十分重要,但是在工作中往往我们却忽略了这一块,因为我们所用的都是现有的模式。一个设计模式的好坏,往往能够体现出程序的专业性,还有整个项目的可持续性。这就是为什么有些公司,在经历了若干年后忽然重写整套代码的原因,因为他们会发现在越来越多的需求的情况下,以前那些设计模式完全不能满足了,或者说程序的复杂度和维护成本实在太高。最近我又看到了一个公司的项目设计,文档中写的还算优秀,可是整体的框架设计总觉得还有差强人意。那么我们又该怎样来设计我们的程序,怎么减少维护代码的成本,怎样使框架能够满足不断增添的新需求或技术?设计模式是一个老生常谈的问题,而且有些技术员将其神乎其能,作为一个出来也有几年的人来说,我也很感谢网络上许多朋友无私的知识分享,所以基于plainframe work(简称PF)的开源精神,就算是做成了商业版,我也将对接下来的设计模式完全公开的分享给大家。
什么是设计模式?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。(这段来自百度百科)
一句话设计模式的产生和应用主要是方便代码的管理,以及节省维护的复杂成本。
现有的模式
最近进入一家公司,该公司主要进行页游方面的开发,据说有一款比较不错的产品。抱着去学习的心态,那是因为自己觉得技术还要需要不断的提高,还有就是别人的成功是否和技术有着直接的关系。因为来的日子并不太长,所以只能简单看到一些脚本层的东西,其脚本也就是大家所熟知的lua了。只不过在脚本层,他们进行了一些简单的封装,如自己写的加载文件的接口等。不过他们似乎很聪明的把lua的扩展名改为.txt,这么别人一眼就不能看出这是一个lua脚本了。其次再看脚本的结构,我只是粗略的看了下,分为几个目录场景、配置目录、方法目录。乍看之下,目录层次还是比较分明的,可是如果要找寻某个系统对于刚看不到一天的我来说还是觉得十分吃力。一是服务端没有详细的目录介绍,似乎大家的开发很随意,那个模块需要你十分熟悉了才能找得到。二是脚本调用结构不分明,调用C++和自身的一些方法没有一定的区分。最后说一点的就是,如果你需要找寻某个功能就需要问熟悉的同事,或者你需要将里面的代码重新梳理一次不可,而且注释极少,你很难看到那里是真正你应该去修改或是增加。看了这些后,对于赚钱的项目就有好的技术,我一下子就彻底的明了了。
鉴于上面的原因,很多的开发者才那么觉得应该进入技术较好的公司,诸如网易腾讯之流来提升自己。而且从这些公司流传出来的代码,可谓成为大家手头上觉得十分厉害的香饽饽。其实麻烦是自己造成的,如果大家懂得合理运用比较好的设计模式,那么你也不必去羡慕那些技术很牛的公司或是人。作为一个开发者,大家并没有太大的区别,而且技术又是在每天在进步,旧的技术很可能会在下一刻更换,那么这个时候人人的机会都是平等的。
一种好的开发模式,必然会对今后的发展有着很大的帮助,如果你想要达到更高的层次的话,对于一名开发者,你就需要全面的去了解设计模式。现在市面上用的比较多的是工厂模式以及MVC的思想,工厂模式这是一个很古老的东西,在这里就不详谈了。而之所以将MVC称之为思想,那是因为早先这个模式是用在网页开发上的,特别是在一些大型语言JSP、.NET.ASP、PHP上。简单说一下在网页设计的三个东西:数据的处理(MODULE)、逻辑的处理(CONTROL)、界面的显示(VIEW),在WEB开发中一开始人们几乎是将这三者糅合在一起来做的,这样代码的可读性和重用性非常之不好。所以有人就这样将各自的分工独立开来做,就像早期的资本主义里的公司体系一样,没有统一的管理,分工非常不明确,效率非常之低。在网页中数据的处理一般指的是读写数据库的操作,逻辑的处理主要处理从用户操作所返回的一个系统的请求,比如说登陆这些,需要处理验证密码、处理注册这些操作,而界面的显示主要负责客户端界面上可以直接看到的东西。
MVC的思想现在已经广泛的用在了各种设计上,包括在客户端也会用到这个思想,只不过数据的处理这块变成了内存的读写而已。不过对于MVC个人的理解是,它充分体现了面向对象的设计,更趋于人性化的管理。
MVC基本的思想:

除了工厂模式和MVC的思想,其实现有的模式还有很多,我在这里就不一一举例了。
我们需要一点改变
任何设计模式都有其局限性,这里称之为改变的,其实是指不要生搬硬套模式的思想。在设计的过程中,我们往往要这样想:这样设计可行吗?这样设计复杂吗?这样设计有没有后遗症?
弄清了三面的几个问题后,我们再来说目录结构的设计,目录结构尽量的层次分明,但是目录嵌套的层数尽可能的少,最好的设计目录的嵌套最好不好超过五级目录。因为太多的嵌套,会将整个目录看起来比较复杂,有的时候我们宁可使用文件前加前缀来做,如opencode_style.h、opencode_view.h这样,而不是将其分成目录(当前其前提是目录层级已经是第五层了)。
再来我们说说接口的设计,接口的设计看起来简单,因为他用不着关心怎么实现,可是从深一层来说,接口设计其实并不简单。在一些比较大型的企业里,接口的设计并不是一般程序可以随便能接触的,而是由专人去负责这个东西,而且这样的人,在公司内来说是有一定的技术的(称之为大牛)。接口设计的重要性,主要是它是不是更灵活,是不是可以方便的扩展,是不是有更好的复用性?如果一个接口都同时满足了这三点,那么这样的接口算是比较好的了。用通俗的话来说,接口主要是看能否在以后能够继续使用,就算出现了新的技术,这个接口是否可以灵活的适应。
最后说一下具体的代码设计,尽量将逻辑的处理与数据分离,尽量将消息的处理单独的放到一个地方统一进行。
PF商业版核心人员招募
开篇语
我们没有大神,只有解决问题的人。
我们没有强悍的技术,只有一颗向往简单的心。
我们没有惊人的理论,只有一堆不可思议的妄想。
我们不需要复杂,只需要够简洁。
我们不需要固定的思维,只需要你能想得到。
核心成员资格需求
1、精通或熟练掌握一门语言
2、能够接受和遵从谷歌C++代码风格
3、灵活而大胆的思考问题
4、能够在规定时间段内完成自己分配的模块(可以灵活调度)
5、有坚持不懈的动力(很重要)
核心成员项目优势
1、无限制的使用商业版到自己的项目中,如果是别的项目则需要和所有成员商量
2、在过程中,你可以得到飞一般的技术提高
3、商业版如果有盈利核心成员的利益将会最大
名额有限,如果大家想加入的话,请发送一段自己熟悉的语言利用plain framework(简称PF)风格的代码到邮箱viticm.ti@gmail.com,我们将尽快的在15年前确定人选,因为商业版的计划从15年1月份开始。
PF托管地址
https://github.com/viticm/plainframework1
PF安装教程
http://www.cnblogs.com/lianyue/p/3974342.html
PF交流QQ群
程序设计模式浅析(plain framework商业版设计模式)的更多相关文章
- plain framework 商业版 开发总结2 项目管理器
任何事情都有三个阶段,分析.制作.质检的过程.在程序中就分为设计.编码.调试(测试)三个阶段,其中设计最为重要,设计的不好会导致编码和调试重复,甚至最后又回到了设计的过程.为了不会重复返工,所以设计的 ...
- plain framework 商业版 开发总结1 updated
每天对着不同的计划,多多少少有一种无形的压力.特别是对技术不好的我来说,过程中遇到的问题实在不少,时常纠结良久.时间慢慢流逝,最后虽然感觉有些不足,但是也不至于差强人意.商业版的PF核心已经升级到1. ...
- plain framework 1 1.0.4 更新 稳定版发布
PF由于各种因素迟迟不能更新,此次更新主要是更新了以往和上个版本出现的内存问题,该版本较为稳定,如果有用到的朋友请更新至此版本. PF 1.0.4 修复1.0.0.3更新后产生的内存问题,可能导致网络 ...
- plain framework 1 1.0.3更新 优化编译部分、网络压缩和加密
有些东西总是姗姗来迟,就好比这新年的钟声,我们盼望着新年同时也不太旧的一年过去.每当这个时候,我们都会总结一下在过去的一年中我们收获了什么,再计划新的一年我们要实现什么.PF并不是一个十分优秀的框架, ...
- plain framework 1 网络流 缓存数据详解
网络流是什么?为什么网络流中需要存在缓存数据?为什么PF中要采用缓存网络数据的机制?带着这几个疑问,让我们好好详细的了解一下在网络数据交互中我们容易忽视以及薄弱的一块.该部分为PF现有的网络流模型,但 ...
- atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结
atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结 1. 为什么虚拟机语言容易被反编译 1 2. 源码泄露的问题问题 1 3. Excelsior JET 1 4. gcj.的流 ...
- plain framework 1(简约框架)一款主要用于网络(游戏)开发的C/C++框架 即将开源发布
在我们的日常开发中,我们往往会遇到这种情况,当我们换了一个开发环境时很可能会重新利用一套新的框架进行开发.由于不同框架有着不同的接口,所以我们不得不花时间再次熟悉这些接口,这将造成开发时间上的重复,而 ...
- 流风ASP.NET框架商业版-工作流1.0简介
流风ASP.NET框架商业版-工作流1.0简介 工作流简介 在流风ASP.NET框架商业版1.0推出后,就有集成工作流的想法,但是由于工作繁忙和其他事情的耽搁,时隔半年之久工作流1.0的版本才姗姗来迟 ...
- 初探Java设计模式4:JDK中的设计模式
JDK中设计模式 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图.首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助.一.设计模式是什么(1)反复出现 ...
随机推荐
- Java学习之注解Annotation实现原理
前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...
- [原创]django+ldap+memcache实现单点登录+统一认证
前言 由于公司内部的系统越来越多,为了方便用户使用,通过django进行了单点登录和统一认证的尝试,目前实现了django项目的单点登录和非django项目的统一认证,中间波折挺多,涉及的技术包括dj ...
- 「译」JUnit 5 系列:基础入门
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...
- Unity 3D json嵌套使用以及多种类型匹配
我们控制端要发送很多命令给终端设备,其中有速度,方向,开关门,开关灯....方法千万种,我只取一瓢.我还小,不知道其他人是怎么写的.我喜欢把有规律的东西放在一起写!为了我的强迫症! using Uni ...
- SimpleSSO:使用Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端
目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Security.SimpleSSO模拟OpenID认证 通过authorization co ...
- 使用VS2015进行C++开发的6个主要原因
使用VS2015进行C++开发的6个主要原因 使用Visual Studio 2015进行C++开发 在今天的 Build 大会上,进行了“将你的 C++ 代码转移至 VS2015 的 6 个原因”的 ...
- 数据仓库开发——Kettle使用示例
Kettle是一个开园ETL工具,做数据仓库用Spoon. 工具:下载Spoon,解压即可用 1.认识常用组件: 表输入 插入\更新 数据同步 文本文件输出 ...
- PHP 原型模式
原型模式:原型模式是先创建好一个原型对象,然后通过拷贝原型对象来创建新的对象.适用于大对象的创建,因为创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可.也可以用作动态 ...
- 9.6 MongoDB一
目录:ASP.NET MVC企业级实战目录 9.6.1 MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统 ...
- window下的各种宽高度小结
详细的请打开这里看console.log window.innerWidth: 文档显示区(body)的宽度window.innerHeight 文档显示区(body)的高度window.outr ...