注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

WA!Peter

广州天河, 香港火炭,深圳罗湖, 北京国贸

 
 
 

日志

 
 

SOLID : Single-Responsibility Open/Closed Principle, Liskov substitution principle  

2011-02-05 22:29:20|  分类: progrmming |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

SOLID 是一种 Object-Oriented 的设计模式, 有些部分我很认同, 这里记录:

SOLID on wiki:
http://en.wikipedia.org/wiki/Solid_(object-oriented_design)

S : SRP Single responsibility principle, 做一件事情, 越简单越好
O : OCP Open/closed principle : a class is open for extension, 但是 closed for modification - 可以修改bug, 肯定的
L : LSP  Liskov substitution principle (Liskov 是提出这个想法的学者), 任何一处程序, 如果能处理
    一种 object (Class T),   那么这段程序必须能正确处理所有子类的object (就是 T 的子类)
I : ISP  Interface segregation principle 用很多不同的 interface, 好过只用一个通用的 interface, 这个跟S 有点类似
D: DIP Dependency inversion principle, 这个跟inversion of control 有点类似 甚至是一样, 目标是把高级入口和低级逻辑分开
    (低级不代表低能, 应该是底层实现的方法).  例如, 使用interface来隔开
    用wiki 上的例子:  (TODO 怎样在 blog.163 使用 fixed-width font?)
    public class ServerFacade {
        public Object respondToRequest(Object request) {
            if (true==businessLayer.validateRequest(request)) {
                DAO.getData(request);
                return Aspect.convertData(request);
            }
            return null;  // 这是 implicit false for the business Layer
     }

     以上代码需要指向 DAO, 还有 Aspect 两个大类, 所以有dependency, 一般DAO非常庞大,而且可能是第三方开发,
     有dependency 不是很好的开发方法.   所以不建议这样做。
     改善的方法为:  创建一个interface  IDAO, 使用以下的方法:
     public class ServerFacade {
         public Object respondToRequest(Object request, IDAO da) {
              return da.getData(request);
          }
     }
    
peter: dependency inversion 这个概念, 比较少使用, 可能在非常复杂的服务器有用, 而且作为
游戏开发, 大部分代码都是accessible, 很少使用第三方开发的代码, 代码编译时间也很快.
  评论这张
 
阅读(603)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017