`
xiaoyaocai
  • 浏览: 39611 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

面向对象五大设计原则的简单指导(转载 cnblogs.com)

阅读更多
五大设计原则是:
1.职责单一
2.对修改封闭,对扩展开放
3.子类可在任何情况下替代父类
4.接口细分
5.具体实现依赖抽象

简单指导,一看就晓:
1.根据业务流程,把业务对象提炼出来。如果业务流层的链路太复杂,比如多条进线,那么就把这个业务对象分离为多个单一业务对象。当业务链路标准化后,对业务对象的内部情况做进一步的处理。把第一次标准化视为最高层抽象,第二次视为次高层抽象,以此类推,直到“恰如其分”的设计层次。
第二,职责的分类需要注意。有业务职责,还有脱离业务的抽象职责,从认识业务到抽象算法是一个层层递进的过程。

2.对客户代码(使用该类的地方)封闭,对服务代码(该类的具体实现可以修改,或者替换)开放。
要实现这个需要面向接口编程,因为接口是遵从不变原则的;
需要一个配置器,负责衔接工作;
需要个中间层,隔离客户端和服务器。

3.第一,是客户端不对具体实现有任何假定。也就是不能有侦测具体类型的代码。
第二,面向接口编程。
第三,具体实现需要通过外部测试代码(客户端对服务端的白盒测试),这个包含具体的业务要求,只是符合单纯的接口是不具实际意义的。

4.客户端不应该使用那些他只是局部使用了的接口,当出现这种情况,应该建立一个新的接口,新接口应该一一对应客户端的需求。

5.第一,面向接口编程。
第二,服务分层模型中,上层代码不(直接)使用下层,而是下层使用上层。通过分离的配置附件来衔接各层级的关系。
第三,不同的抽象级别中,高层抽象不使用低层抽象,低层抽象使用高层抽象。
第四,把业务逻辑放在高层中,抽象化编程。
分享到:
评论

相关推荐

    WindowsLiveWriter.CNBlogs.CodeHighlighter

    "Windows Live Writer CNBlogs CodeHighlighter" 正是一款针对这一需求的插件,专为提升代码插入体验而设计。 该插件的核心功能是代码高亮显示,它可以使得插入到博客文章中的代码块更加清晰易读。在没有此类插件的...

    com.cnblogs.xamarinandroid_v5.4.28_downcc.com.apk

    com.cnblogs.xamarinandroid_v5.4.28_downcc.com.apk

    WLW插入着色代码块插件CNBlogs.CodeHighlighter

    使用CNBlogs.CodeHighlighter插件的过程非常简单。首先,用户需要下载并安装该插件,其中包含的"WindowsLiveWriter.CNBlogs.CodeHighlighter.dll"是核心组件。在WLW中安装插件后,用户可以在撰写博客时选择“插入”...

    CnBlogs.Com用到的CSS控制的代码折叠

    在探讨"CnBlogs.Com用到的CSS控制的代码折叠"这一主题时,我们深入解析了如何通过CSS来实现代码的折叠功能,这是一种常见的代码展示优化技术,尤其在博客、论坛等分享编程经验的平台上非常实用。下面,我们将详细...

    卷积神经网络提取特征并将其应用于SVM-http-www.cnblogs.com-chuxiuhong-p-

    卷积神经网络提取特征并将其应用于SVM-http-www.cnblogs.com-chuxiuhong-p-6132814.html_CNN-SVM

    基于PHP的将博客园(cnblogs.com)数据导入到wordpress的php代码.zip

    标题中的“基于PHP的将博客园(cnblogs.com)数据导入到wordpress的php代码.zip”表明这是一个使用PHP编程语言编写的程序,其目的是帮助用户将博客园(CNBlogs)平台上的博客数据迁移到WordPress系统中。这个过程通常...

    深入理解JavaScript系列.chm

    该文档是根据博客园汤姆大叔的深入理解JavaScript系列(http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html)博文整理而成,主要内容包括: 1.编写高质量JavaScript代码的基本要点 2.揭秘命名函数...

    C#开发学习人工智能的第一步_httpswww.cnblogs.comkibap1141_WpfAffdex.zip

    C#开发学习人工智能的第一步_httpswww.cnblogs.comkibap1141_WpfAffdex

    sso详细设计说明书(下篇)转载(海纳百川文章http://www.cnblogs.com/David-weihw/a)

    总的来说,SSO详细设计说明书下篇将涵盖SSO的工作原理、实现策略以及可能涉及的技术选型,对于理解和构建自己的SSO系统具有重要指导价值。为了确保系统的安全性和用户体验,设计时需要考虑如何有效地管理和保护用户...

    23种设计模式的java实现

    23种设计模式的java实现。创建型 抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html 工厂方法 http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html 建造者模式 ...

    基于PHP的将博客园(cnblogs.com)数据导入到wordpress的php代码源码.zip

    该压缩包包含的是一个基于PHP编写的程序,用于将博客园(cnblogs.com)的数据导入到WordPress平台。这个工具对于那些在博客园积累了大量内容,希望迁移到WordPress平台的用户非常有用。它能够帮助用户方便地迁移他们...

    django项目实例(django 简易博客开发)

    http://www.cnblogs.com/cacique/archive/2012/09/29/2707976.html django 简易博客开发 2 模板和数据查询 http://www.cnblogs.com/cacique/archive/2012/09/30/2709143.html django 简易博客开发 3 静态文件、...

    C# 简单的作业调度

    ,C# 简单的作业调度,亦可参考博客:http://www.cnblogs.com/chenwolong/p/Job.html,C# 简单的作业调度,亦可参考博客:http://www.cnblogs.com/chenwolong/p/Job.html,C# 简单的作业调度,亦可参考博客:...

    finance-master1简单的财务会计软件.rar

    一个简单的财务会计软件,能够录入会计凭证,并根据凭证自动生成三大报表。详情查看:https://www.cnblogs.com/edwardorchis/p/10506391.html 如何快速开始 https://www.cnblogs.com/edwardorchis/p/14405910.html ...

    Entity Framework学习初中高级篇-博客园cnblogs.rar

    Entity Framework(EF)是Microsoft开发的一个对象关系映射(ORM)框架,用于.NET应用程序,它允许开发者使用面向对象的编程语言(如C#或VB.NET)来操作数据库,而无需编写大量的SQL语句。这个“Entity Framework...

    边缘羽化.rar

    canvas 不规则透明图像边缘羽化 看了一个哥们的文章写的。 看了这个帖子写的 https://www.cnblogs.com/luoeeyang/p/9337871.html 用在抠图之后,消除边缘毛边。 谁还有更好的算法求分享

    一个牛人提供的GIS源码(很好)

    ┕全文下载(供转载专用):http://www.cnblogs.com/Files/Tangf/Nuvi350.rar MapBar中坐标的加密和解密(JS实现) http://www.cnblogs.com/Tangf/archive/2006/06/06/419124.html 发现一个SVG做的地图网站:ChinaQuest ...

    学员管理系统

    学员管理系统是一种专为教育机构设计的信息管理工具,旨在优化教务流程,提升工作效率,并确保学员信息的安全和有序。系统的核心目标是实现学员信息的高效存储、检索和管理,以支持教育机构的各项教学活动。 SSH...

    webApi请求插件PostMan

    webApi请求插件PostMan,请参考博客:http://www.cnblogs.com/chenwolong/p/PostMan.html。webApi请求插件PostMan,请参考博客:http://www.cnblogs.com/chenwolong/p/PostMan.html。webApi请求插件PostMan,请参考博客...

Global site tag (gtag.js) - Google Analytics