Liskov替换原则(Liskov Substitution Principle)是一组用于创建继承层次结构的指导原则。按照Liskov替换原则创建的继承层次结构中,客户端代码能够放心的使用它的任意类或子类而不担心所期望的行为。 Li...
阅读(6) 评论(0)
开放封闭原则定义 开放与封闭原则有两种不同的定义,分别是20世纪80年代最原始的定义和后期一个更现代的定义,后者对前者进行更加详尽的阐述。 Meyer的定义 软件实体应该允许扩展,但禁止修改 ​ ——《面向对象软件构造》 Mart...
阅读(6) 评论(0)
SOLID是一组最佳编码实践的首字母缩写 S 单一职责原则 O 开放与封闭原则 L Liskov(里式)替换原则 I 接口分离原则 D 依赖注入原则 同时应用这些最佳实践,可以提升代码适应变更的能力。但是凡事要有度,过度使用虽然可以...
阅读(6) 评论(0)
优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。嵌套查询写起来简单,也容易理解。但是,有时候可以被更有效率的连接(JOIN)替代。 现在假如要找出从来没有在...
阅读(9) 评论(0)
最近读了一本关于产品的好书《用户思维+ 好产品让用户为自己尖叫》,虽然是一本产品相关的书,但是全书都在围绕如何让你的用户变得更优秀展开讨论。作者的观点很明确也很独到,可持续成功的产品都是由推荐(口碑传播)产生的。而激发这些推荐的是用户对...
阅读(10) 评论(0)
集合是.NET FCL(Framework Class Library)的重要组成部分,我们平常撸C#代码时免不了和集合打交道,FCL提供了丰富易用的集合类型,给我们撸码提供了极大的便利。正是因为这种与生俱来的便利性,使得我们对集合既熟...
阅读(22) 评论(0)
缓存是现在系统中必不可少的模块,并且已经成为了高并发高性能架构的一个关键组件。这篇博客我们来分析一下使用缓存的正确姿势。 缓存能解决的问题 提升性能 绝大多数情况下,select 是出现性能问题最大的地方。一方面,select 会有很...
阅读(18) 评论(0)
模块化原则倡导利用集中和分解等手法创建高内聚、低耦合的抽象。 为了理解模块化的含义及其很重要的原因,来看看一本书的极端情况。假设一本书像讲一个长故事一样阐述其中的内容,中间没有任何停顿,也没有章节。试问面对这样的图书,读者将作何反...
阅读(29) 评论(0)
$(window).load(function () { //给每张图片添加标题,div.cnblogs_post_body是博客主体 $("div[id=cnblogs_...
阅读(30) 评论(0)
$(window).load(function () { //给每张图片添加标题,div.cnblogs_post_body是博客主体 $("div[id=cnblogs_...
阅读(32) 评论(0)
$(window).load(function () { //给每张图片添加标题,div.cnblogs_post_body是博客主体 $("div[id=cnblogs_...
阅读(21) 评论(0)
喜欢天黑却怕鬼 扎的越深,浮的越高。 博客园 首页 新随笔 联系 订阅 --> 管理 随笔...
阅读(33) 评论(0)
喜欢天黑却怕鬼 扎的越深,浮的越高。 博客园 首页 新随笔 联系 订阅 --> 管理 随笔...
阅读(46) 评论(0)
[toc] 未利用封装 客户代码使用显式类型检查(使用一系列if-else或switch语句检查对象的类型),而不利用出层次结构内已封装的类型变化时,将导致这种坏味。 为什么要利用封装? 一种臭名昭著的坏味是,在客户代码中使用条件语句...
阅读(25) 评论(0)
[toc] 缺失封装 没有将实现变化封装在抽象和层次结构中时,将导致这种坏味。 表现形式通常如下: 客户程序与其需要的服务变种紧密耦合,每当需要支持新变种或修改既有变种时,都将影响客户程序。 每当需要在层次结构中支持新变种时,都添加...
阅读(17) 评论(0)
1 2 下一页共2页  到第