代码改变世界

Android Ap 开发 设计模式第八篇:抽象工厂模式

2011-07-25 21:27 by Terry_龙, 5890 阅读, 收藏, 编辑
摘要: Abstract Factory Pattern模式解读 abstract 是“抽象”,factory 是“工厂”,所以合起来abstract factory 就是“抽象工厂”的意思。Abstract Factory Pattern 中的抽象工厂则是把各种抽象零件合成抽象产品。换句话说,处理的重点是在接口(api)而不是零件的具体实现。只利用接口(API)就能把零件组合成产品。 模板方法模式和生成模式的情形 是在子类进行具体的实现,而抽象工厂模式也同样是由子类来处理具体 的实现。在子类就会出现具体工厂利用具体零件组合而成的具体产品。程序示例 本篇涉及的类较多,较之单例模式而言理解真来比较难。.阅读全文

Android Ap 开发 设计模式第七篇:生成器模式

2011-07-18 21:31 by Terry_龙, 2120 阅读, 收藏, 编辑
摘要: Builder Pattern模式解读 生活在深圳这所高速发展的城市,高楼大厦林立。所谓万丈高楼平地起,在我们感慨楼层的高耸之外,更要配服楼层的建造者和设计者。大楼首先得打稳地基、搭建骨架,再由下往上一层层盖上去。而这样的架构从程序的设计模式来说有个专用名词叫:“Builder ”。 场景模拟 由一个固定的建筑材料“固定的字符串”,然后将这些建筑材料组合拼装,按照楼层的需要建造不同的大楼层,如:商务层、购务层、停车层等“组合拼装字备份域控制器串”。功能演示 测试程序结构图如下: UML图中,共有四个类: Builder 抽象类:不含实际处理内容,仅声明抽象方法。 Director 类:负责产.阅读全文

Android Ap 开发 设计模式第六篇:原型模式

2011-07-14 21:26 by Terry_龙, 2316 阅读, 收藏, 编辑
摘要: Prototype Pattern名称由来 不是利用类来产生实例对象,而是从一个对象实例产生出另一个新的对象实例 ,根据被视为原型的对象实例 ,建立起的另一个新的对象实例就称为原型模式(Ptototype Pattern)。需求场景种类过多无法整合成类时第一种情形:若须处理的对象种类太多,如果要一个个设成不同的类,须产生大量的源程序文件不容易利用类产生对象实例时第二种情形:该对象的实例产生过程太复杂,很难利用类来建立。希望把框架和所产生的对象实例分开时第三种情形:希望让产生对象实例时的框架不会只存在于某些特殊类时。功能演示 测试程序类结构图如下: 模式UML图中,共有三个类:接口,Produ.阅读全文

Android Ap 开发 设计模式第五篇:单件模式

2011-07-13 20:36 by Terry_龙, 2856 阅读, 收藏, 编辑
摘要: Singleton Pattern名称由来java 是一门面向对象的语言,android 用的也是java 开发ap ,在java/C# 里面所有的物体(类)都可以看作是一个对象,而要使用这个对象无外乎为它在内存里面分配一个对象,一般情况下最直接的方法是new 一个对象,让它存在于内存中。 单件/例模式是所有设计模式中可以说是最简单最易懂的一种编程方式 ,想保证某个特定类的对象实例绝对只有一个时,想在程序上表达出对象实例只会有一个时,这种做法就被称为单件/例模式。 Singleton 是指只有1个元素的集合。就是因为它只会有1 个对象实例,因而得名。由于其简单性,在此就不把UML图画出来了。.阅读全文

Android Ap 开发 设计模式第四篇:工厂方法模式

2011-07-12 21:07 by Terry_龙, 3243 阅读, 收藏, 编辑
摘要: Factory Method Pattern模板模式的衍生品? 以Template Method Pattern 架构获取产生对象实例的工厂就是Factory Method Pattern。 工厂方法模式在父类规定对象的创建方法,但并没有深入到较具体的类名。所有具体的完整内容 都放在子类。根据这个原则,我们可以大致分成产生对象实例的大纲(框架)和实际生产对象实例的类两方面。场景模拟 以一个工厂进厂打工为原型,工人们进厂须先登记信息,由所登记的信息进入创建工卡,工人们每天进厂必须使用工卡打卡,开始一天的劳动。以此为例,进行编程,设计UML图如下:程序实现 抽象类Product定义抽象方法cre.阅读全文

Android Ap 开发 设计模式第三篇:模板方法模式

2011-07-08 22:14 by Terry_龙, 3019 阅读, 收藏, 编辑
摘要: Template Method Pattern模板的含义 所谓模板,有用过VS的朋友会比较熟悉,这个IDE将一些统一的代码编写方法制作成模板加载在IDE里面,开发者可以根据自己制作的模板或者微软提供的模板比如Asp.net 、Winform 、WPF开发等各种模板。而Android 建立项目初期生成的Project 也可以当作是一个模板。它是将原先定义好的东西事先写好了一套规范,具体要如何使用这套规范模板来完成不同的任务,是要看我们的AP开发者不同的实现方法。 作为模板的方法要定义在父类,而方法的定义中使用到抽象方法。因此如果只看父类部分的程序,根本不知道到底会是怎样处理内容,最多只能了解该.阅读全文

Android Ap 开发 设计模式第二篇:适配器模式

2011-07-06 21:05 by Terry_龙, 3654 阅读, 收藏, 编辑
摘要: Adapter Pattern 适配器模式似曾相识 做过Android Ap开发的朋友一般情况下都会用到Google 提供的BaseAdapter 适配器做扩展,用来填充ListView、GridView 等窗口控件。用过的朋友都会觉得很简单很方便就可以对控件做一个数据源。而BaseAdapter 正是一个适配器,Google 考虑到适配器的一个特性则可以如此概括用 “既有内容” 去实现 “需要结果” 。Adapter Pattern 适配器模式共分为两种:类的 Adapter Pattern (即所谓的继承)对象的 Adapter Pattern (即所谓的委托)场景需求 给定的一个字符串.阅读全文

Android Ap 开发 设计模式第一篇:迭代器模式

2011-07-05 21:18 by Terry_龙, 5526 阅读, 收藏, 编辑
摘要: Iterator Pattern迭代器模式场景猜想 经常编写代码都会碰到遍历一个数组,使用for循环得到数组下标之后去做进一步操作。例如下文代码:int[]array=newint[5];for(inti=0;i<array.length;i++){System.out.println(""+i);}或:int[]array=newint[5];for(inti:array){System.out.println(""+i);}当然,还有更多的作法,利用将 i 将下标推移的方式遍历数组元素。 使用设计模式来编写的时候,可以将 i 的行为,抽象化为迭阅读全文

android 打包自己的自定义组件成JAR包

2011-05-12 23:00 by Terry_龙, 19109 阅读, 收藏, 编辑
摘要: 在项目开发过程中,我们难免会用到自己去制作自定义的VIEW控件,之后我们别的项目如果需要的话就直接将其复制到对应的项目中使用,虽说这么做是一个解决问题的方法,但毕竟不是很好。原因是,当我们项目积累越来越多,会发现自定义的控件越来越多,而且这些自定义的控件都是可以重复利用的,这时我们可以想想,如果把这些自定义控件都封装成一个JAR包,然后用一个项目积累起来,之后我们以后开发项目只要在原来JAR包的基础上做扩展或者直接使用,可以大大减少自己的工作重复性。首先Android 工程的基本面貌是这样的:当然对应的Activity 文件被我删除了,因为当编译成jar 包我们并不需要Activity 文件。阅读全文

android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】

2011-04-23 14:52 by Terry_龙, 17821 阅读, 收藏, 编辑
摘要: protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据。谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区。 参考文档 http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html API的参考文档 protobuf 适用的语言 正宗(Google 自己内部用的)的protobuf支持三种语言:Java 、c++和Pyton,很遗憾的是并不支持.Net 或者 Lua 等语言,但社区的力量是不容忽视的,由于protobuf确实比Json、XML有速度上.阅读全文

Windows Phone 7 截取当前屏幕保存图像的代码

2011-04-22 14:16 by Terry_龙, 1949 阅读, 收藏, 编辑
摘要: 导入以下命名空间:using System.Windows.Media.Imaging;using System.IO;using Microsoft.Xna.Framework.Media;全部代码如下:1publicvoidCaptureScreen(objectsender,EventArgse)2{3WriteableBitmapbmp=newWriteableBitmap(480,800);4bmp.Render(App.Current.RootVisual,null);5bmp.Invalidate();67MemoryStreamstream=newMemoryStream().阅读全文

在Eclipse中配置google protobuf(转)

2011-04-20 17:02 by Terry_龙, 10834 阅读, 收藏, 编辑
摘要: 官方文档http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/javatutorial.htmlhttp://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/reference/java/index.htmlhttp://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/proto.htmlhttp://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/refe阅读全文

众多Android 开源项目推荐,给力工作给力学习

2011-04-18 15:20 by Terry_龙, 59082 阅读, 收藏, 编辑
摘要: FBReaderJFBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。 项目地址:http://www.fbreader.org/FBReaderJ/ AngleAngle是一款专为Android平台设计的,适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java...阅读全文

创业型公司或发展中公司请不要随意给员工开空头支票~~!!!

2011-04-07 10:09 by Terry_龙, 10888 阅读, 收藏, 编辑
摘要: 好好干,等产品出来了,公司有收益了都给你发项目奖金,给你们分红于是一个有着宏远目标的老板带着几个怀着满腔激情的年轻程序员拼命的干活,为的就是项目出来了,在市场上能有一番反响,得到一笔不错的分红,或者是期权。可是到头来随着时间的推移,当初的几个程序员满满没有激情,开始抱怨公司的薪水待遇问题,随着这一问题越来越严重。起初的几个员工开始有人离职或者跳槽拿高薪,带来的则是项目夭折,当初说这种话还不如设立一...阅读全文

【WP7进阶】——XNA游戏平面矩形碰撞检测

2011-03-26 19:55 by Terry_龙, 2782 阅读, 收藏, 编辑
摘要: 碰撞检测在几乎任何游戏都是很关键的一个部分,而碰撞检测又决定了游戏的流畅性,它对流畅性的影响如何之大的原因,在于碰撞检测算法越是精确到位,游戏将会运行得越缓慢。在碰撞检测方面,很明显需要在准确性和性能之间进行权衡。 实现碰撞检测最简单和快速的方式是通过包围盒算法。当用一个包围盒算法时,就需要在屏幕上的每个物体(纹理图像)周围“画“一个盒子(矩形块),然后检查这些盒子是否相交,如果产生相交(怎么听起来这么耳熟?),就即可判断出是产生碰撞了。经典的碰撞游戏可以看看如今某I设备上风靡全球的小鸟通过物理算法和碰撞检测等实现这只小鸟欺负小猪的传说,这点是很值得借鉴滴。本篇学习文章将会有两个纹理图,一个.阅读全文

【WP7进阶】——XNA游戏精灵的动画

2011-03-23 17:34 by Terry_龙, 2512 阅读, 收藏, 编辑
摘要: 通过上面几节的学习,慢慢的掌握了精灵的一些基本常识,但是我们知道游戏中游戏精灵都是富于表现能力的,并且通过不同的动作或者动画去构造一个游戏。这篇文章将学习如何使用系列图为游戏精灵添加动画效果,以下面这一系列图为例,将其分割显示:--这个图片是偷 深蓝 的 这是一张png图片,我们还是需要把它加载到纹理图形中,可以考虑如何在精灵位图上轮流获得独立的精灵帧。以下编写这个精灵帧所要先得到的信息:精灵位图中每个单独图像(帧)的宽和高精灵位图的行与列的总数指示接下来精灵位图中将要绘制精灵帧在精灵位图中所处的行与列的位置索引 上面的那张精灵位图中,每个单独精灵帧的宽和高都是150像素,有10行1列。所以.阅读全文

【WP7进阶】——XNA游戏精灵放大、旋转、层深度

2011-03-22 17:34 by Terry_龙, 2345 阅读, 收藏, 编辑
摘要: 游戏很多都是涉及到操纵游戏精灵的相关知识,本篇还是根据游戏精灵的一些常用知识做的学习,下面是本文大纲:精灵界面居中精灵放大并且旋转纹理的层深度 精灵在界面居中上篇文章我们为游戏添加一个背景图片,接下来我们希望不让游戏精灵走动了,而是让其在游戏的正中间停靠。默认Window.ClientBounds这个矩形块可以获得当前设备的宽度和高度-(这里是绝对宽度和高度,无论你屏幕如何旋转它始终获取原始宽高。)而使用graphics.GraphicsDevice.Viewport 获取设备的宽高则是通过上面设置的PreferredBackBuffer 属性获取而来。这个是两者的区别使精灵界面居中,代码如下阅读全文

【WP7进阶】——XNA游戏初探2

2011-03-21 23:33 by Terry_龙, 2009 阅读, 收藏, 编辑
摘要: 继上篇文章,有一个问题遗留了下来。就是Update方法与Draw 方法这两个方法的呼叫时机,通过上篇文章,我们知道重写了Update方法 是用来更新游戏状态的,而重写Draw 方法是用来显示游戏画面的。当游戏程序一进入运行时间便会不断地呼叫Update 方法和Draw 方法。注意:并不是每一次Update 方法被呼叫之后,Draw 方法就会跟着被呼叫(正常情况是这个顺序)。Update 方法与 Draw 方法被呼叫的频率要视Game1 的属性IsFixedTimeStep 值而定。true (默认值)时游戏处于固定更新(fixed-step)模式。如果程序绘制画面时无法跟上更新频率,则会调用.阅读全文

【WP7进阶】——XNA游戏初探

2011-03-20 13:21 by Terry_龙, 3082 阅读, 收藏, 编辑
摘要: 之前一直在做Android 的软件应用,包括现在学习Wp7 开发也一直未接触过游戏方面的开发。这几天对XNA开发粗略的看了一下,也找了相关的文档,觉得对于学习XNA方式开发WP7游戏应用应该是一件很酷的事。也是对自己本身职业技能的提高吧。学习XNA开发游戏需要的工具Visual Studio 2010 前提是安装了Developer Tools 套件或Express for Windows PhoneMicrosoft Cross-Platform Audio Creation Tool 3 (XACT3):XACT 是一个由 Microsoft 开发的跨平台的音效建立工具,可以协助您建立游.阅读全文

Android 使用AsyncTask 后监听异步加载完毕的动作

2011-03-07 10:16 by Terry_龙, 6410 阅读, 收藏, 编辑
摘要: AsyncTask 的使用方法网上有很多例子,使用起来也非常的方便。这里就不详细说具体的使用方法了,同学可以Google 一下,很多。场景模拟 当我们在加载一个列表的时候,比如GridView ,这时候我们考虑到不阻塞UI的做法,一般会使用线程Thread 、Timer 或者使用AsyncTask ,而这些操作都是在在后台另外开一个线程给我们找数据,具体得到的数据需要使用Handler 去更新UI,AsyncTask 也是一样使用到的Handler 只是它将Handler 封装在了onPostExecute 执行操作中。而这一操作可能会产生一个问题,比如你有一个列表更新数据库使用到的是Asy.阅读全文