Android 设计随便说说
我曾经搞过应用程序的设计,当时只是读了半本宝典《重构...》,现在看来就这半本九阴真经,收益甚多啊 。再加上这现年工作上的印证,基本上可以拿出喷一下了。当然现在看来当年的项目设计真是很烂了。
第一个问题,什么是设计?我的回答是:为了提高程序执行效率,对程序按照模块划分,并且合理组合。往后我将继续沿用这两个点,模块划分和合理组合。
第二个问题,设计的原则?我的回答是:低耦合,高内聚是设计唯一的原则。有可能你还要问不是还有五大原则么?这里我将这五个原则一一道来。
1 单一职责原则。什么是单一职责?就是一个类,或者一个模块之负责一个任务,一个事情。例如数据库模块,就负责数据存储,并提供数据存储的读写接口,而一点点也不关心业务。回头问为了什么?答案是,为了提高内聚。
2 依赖倒置原则。原本是上层的业务实现,需要底层的模块支持,通过解析数据包,很早的时候使用的是解析xml。现在是解析json。那么如果从xml切换到json时上层业务还需要修改的话,这就没有做到很好的耦合。依赖倒置就是解决这个类问题,把上层业务对底层的依赖从实体抽象到接口。这个接口有两个作用,一是契约的意思,谁能够遵守这个契约,谁就可以上。二是分割的意思,这个接口之上是上层业务,以下是实现单元。回头问为了什么?答案是,为了低耦合。
3 里氏替换原则。这个针对基类和子类一个较为严格的要求。即无论一个子类如何实现都应该保持父类对外的接口功能,这样子类才可以替换完整的替换父类,而具有同样功能的子类可以相互替换。一块肉,喂给狼可以 ,喂给老虎可以,喂给狮子也可以,但是喂给牛是不行的。因为牛的父类是食草动物,没有吃肉的接口。答曰,低耦合,易于移植。
4 接口隔离原则。这个是针对接口的一个要求,是一个外围要求,即一个接口不能将风马牛不相及的接口都写在一个接口类里面。接口类也应该保持单一职责原则。但是对风马牛不相及的的接口要各自写个各自的。总之上帝归上帝,凯撒归凯撒。答曰,高内聚。
5 迪米特原则。意思是一个类对于它的依赖类竟可能的知道的越少越好。而依赖类则是尽可能少的暴露实现。在放大到一个模块中,模块之间的类尽可能的依赖模块中的类,但是不对外面或者很少的对外面暴露模块内部的类。答曰,高内聚。
最后一个就是开闭原则。即对接口进行开放,对实现进行封闭,这样即便是出现问题提也是内部实现问题,不用修改接口。要知道修改接口,就要修改依赖类,改动很大的。其实以上的其他原则都是实现了开闭原则。这也是降低耦合提高内聚的法子。
这些都是太抽象了,明天写一点具体的。
Android 设计随便说说的更多相关文章
- Android 设计随便说说之简单实践(合理组合)
上一篇(Android 设计随便说说之简单实践(模块划分))例举了应用商店设计来说明怎么做模块划分.模块划分主要依赖于第一是业务需求,具体是怎么样的业务.应用商店则包括两个业务,就是向用户展示appl ...
- Android 设计随便说说之简单实践(模块划分)
上篇随笔随(Android 设计随便说说)便说了一下什么是设计以及设计的原则,这里举一个简单的例子来进一步的说Android设计.我们以应用商店的设计来举例. 在设计之前,需要把握两部分内容,才能使得 ...
- Android 设计随便说说之简单实践(消息流动)
在上面两篇分别说明了设计中较为简单也是很关键的实践点. 第一模块划分,它是根据每个模块所承载的业务,进行划分,是应用程序一个静态的描述. 第二合理组合,它是是将每个模块调动起来,共同实现业务,是一个准 ...
- android设计准则
------------缘由-------------------------------------------------------------------------------------- ...
- 【转】Android设计中的.9.png
来源:http://isux.tencent.com/android-ui-9-png.html Android设计中的.9.png 注意:当使用9.png做TextView背景时,一定要设置内容区域 ...
- android设计的布局在阿拉伯语下界面错乱的解决方法
(1)正在AndroidManifest.xml声明文件的application元素中,增加” android:supportsRtl=true” (2)建] androidの设计的布局在阿拉伯语下界 ...
- Android设计中的.9.png图片
.9.png是一种能够自己定义拉伸特定区域的图片格式. 简书:Android设计中的.9.png图片 在Android的UI设计开发中,非常多控件须要适配不同的手机分辨率进行拉伸或者压缩,这样就出现了 ...
- Android 设计一个菱形形状的Imageview组件.
网上没有资料,特来请教下大神 Android 设计一个菱形形状的Imageview组件. >> android这个答案描述的挺清楚的:http://www.goodpm.net/postr ...
- android设计,图标等概述
作者:郦橙 锦妖 链接:https://www.zhihu.com/question/36813390/answer/87029428 著作权归作者所有,转载请联系作者获得授权. 简单复制,用于记录, ...
随机推荐
- JavaScript用JQuery呼叫Server端方法
准备好Server端的方法 [System.Web.Services.WebMethod] public static string VeryUserName(string name) { strin ...
- BZOJ_1208_&_Codevs_1258_[HNOI2004]_宠物收养所_(平衡树/set)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1208 (据说codevs要更新?就不放codevs的地址了吧...) 有宠物和人,每个单位都有 ...
- BZOJ1935: [Shoi2007]Tree 园丁的烦恼
1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec Memory Limit: 357 MBSubmit: 552 Solved: 220[Submit][ ...
- ASP.NET (HttpModule,HttpHandler)
asp.net 事件模型机制 ----------------------- 一 客户的请求页面由aspnet_isapi.dll这个动态连接库来处理,把请求的aspx文件发送给CLR进行编译执行,然 ...
- JavaScript高级程序设计53.pdf
共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...
- 【转】开始使用Mac OS X——写给Mac新人
写这篇文档的原因有两个,一.身边使用Mac的朋友越来越多,经常会有人来咨询一些常见的使用问题,比如:“为什么把界面右上角的红色按钮叉掉,程序还没有关闭?”之类.而且我也不愿意看到很多人使用OSX时仅仅 ...
- [C#] 常用工具类——文件操作类
/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在&l ...
- Android 系统名字、版本、API level的对应关系
从官网上找到的,具体地址是: http://source.android.com/source/build-numbers.html Code name Version API level Lolli ...
- android_handler(三)
这篇记录 android 消息机制中,MainThread 向 WorkThread 发送消息.( MainThread → WorkThread ) 步骤: 1.准备looper对象 2.在子线程中 ...
- MFC 一个类訪问还有一个类成员对象的成员变量值
作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...