`
810364804
  • 浏览: 788347 次
文章分类
社区版块
存档分类
最新评论
文章列表
定义:一个对象应该对其他对象保持最少的了解。 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的。 迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己 ...
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。 依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定 ...
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 定义1:如果对每一个类型为 T1的对象 o1,都有 ...
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。 说到单一职责原则,很多人都会不屑一顾。因为它太简单了。稍有经验的程序员即使从来没有读过设计模式、从来没有听说过单一职责原则,在设计软件时也会自觉的遵守这一重 ...
根本不懂JS,硬伤啊…… Unity代码中if(Application.isWebPlayer) { Application.ExternalCall("linkApp",args[0]); } 导出的网页中<script>function linkApp(url){ window.open(url,"_blank");}</script>
《Material Design》提到,Android L版本中新增了RecyclerView、CardView 、Palette。RecyclerView、CardView为用于显示复杂视图的新增Widget。Palette作为调色板类,可以让你从图像中提取突出的颜色。 RecyclerView RecyclerView作为替代ListView使用,RecyclerView标准化了ViewHolder,ListView中convertView是复用的,在RecyclerView中,是把ViewHolder作为缓存的单位了,然后convertView作为ViewHolder的成员变量 ...
//这个方法就是不加载图片的情况下可以得到图片宽高 BitmapFactory.Options options = new BitmapFactory.Options(); /** * 最关键在此,把options.inJustDecodeBounds = true; * 这里再decodeFile(),返回的bitmap为空,但此时调用options.outHeight时,已经包含了图片的高了 */ options.inJustDecodeBounds = true; Bitmap bitmap = BitmapFactory.decodeFi ...
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38799363,本文出自:【张鸿洋的博客】 一直在仿微信界面,今天终于有幸利用百度云推送仿一仿微信聊天了~~~ 首先特别感谢:weidi1989分享的Android之基于百度云推送IM,大家可 ...
1、armeabi armeabi是指的该so库用于Arm的通用CPU。 2、armeabi-v7a v7a的CPU支持硬件浮点运算。 3、共同点 armeabi和armeabi-v7a是表示cpu的类型。 4、不同点 因此armeabi通用性强,但速度慢,而v7a能充分发挥v7a CPU的能力。armeabi就是针对普通的或旧的armcpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu。 1、armeabi armeabi是指的该so库用于Arm的通用CPU。 2、armeabi-v7a v7a的CPU支持硬 ...
等了好久,微信公众号终于开通啦!关注微信公众号,除了你在这里看到的,还会有更多的干货哦! ——————————————————————————————————————————————————————— ...
Bmob网站 void Signup() { BmobUser user = new BmobUser(); user.username = "111111"; user.password = "123456789"; user.email = "111111@qq.com"; Bmob.Signup<BmobUser>(user, (resp, exception) => { if ...
《Effective Java》中序列化一节关于java的序列化存在如下说法: 对象序列化(object serialization)API,它提供了一个框架,用来将对象编码成字节流(serializing),并从字节流编码中重新构建对象(deserializing)。一旦对象被序列化后,它的编码就可以从一台正在运行的jvm传到另一台jvm上,或者被存储在磁盘上,供以后反序列化时用(如tomcat的session的可持久化)。序列化技术为远程通信提供了标准的线路级对象表示法,也为JavaBeans组件结构提供了标准的持久化数据格式。 关于java序列化,看过不少资料,一直没有完全搞明 ...
在写这篇之前,首先要道歉。 我写这篇东西的目的,原本是为了记录创业几年来的一些历程。但在上一篇《技术型创业者容易遇到的三大问题》中,我对好友的项目多加评论,导致了读者“大灰兔”的质疑。P2P网站中的5000注册用户的确是不少,盈利问题的确也是不错,但大牛君在此地仅仅是一个小技术人员,无股权无期权,只是为了技术爱好去研究一些数据样本。这样一来,在我看还是相对比较耽误时间的。但这都是主观意识,各位读者口味不同,期待还是求同存异。不过,既然之前发生了这样的问题,在之后的文章中,我还是会首先审视自己,再去评价别人。 —————————————————————— 2011年创业之初, ...
最近观察生产环境发现一个现象,一段时间不操作,再重新操作时,数据库连接第一次会出现:java.sql.SQLException: Already closed.,如下: error log: (org.springframework.dao.RecoverableDataAccessException: PreparedStatementCallback; SQL [select user_id,login_name from t_sys_user where login_name=? and password=?]; The last packet successfully ...
关于创业这事儿,因为经历的事情实在是太多了,所以真是想到哪儿写到哪儿。 这一篇算是《杂记》的番外篇。我今天想说的东西太多了,实在是很想和更多人讨论讨论关于创业的事情。这种感觉就像是一个刚刚从战场上回来 ...
Global site tag (gtag.js) - Google Analytics