(导读 III)

作为面向对象基础设计原则的忠实体现,设计模式帮助我们在学习过程中不断强化以下五项原则性设计:

1. 单一职责原则 (SRP) —— 一个类应该有且仅有一个引起变化的因素;

2. 开放封闭原则 (OCP) —— 对扩展开放,对修改封闭;

3. Liskov 替换原则 (LSP) —— 子类可以替换为它的基类;

4. 依赖倒置原则 (DIP) —— 高层模型不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象;

5. 接口隔离原则 (ISP) —— 一个类对另外一个类的依赖建立在最小的接口上;

(导读 VII) 行为型模式关注与运行过程中算法的提供和通信关系的梳理;

(P18)

如果代码将被反复重用,只要进度允许,尽量用泛型:

1. 省去 Cast 过来 Cast 过去,提高了效率;

2. 抽象给代码带来更多适应性;

3. 减少接口和参数的歧义;

(P80) 工厂方法地的意图非常明确,它把类的实例化过程延迟到子类,将 new() 的工作交给工厂完成;

(P184)

适配器主要有三个作用:

1. 完成旧接口到新接口的转换;

2. 将“既有系统”进行封装,逻辑上客户程序不知道“既有系统”的存在,将变化隔离在 Adapter 部分;

3. 如果客户程序需要迁移,仅需要在 Adapter 部分做修改;

(P187) 如果在一开始学习的时候就有人提示一下多好;

(P260) “用面向对象思想设计的应用常常会面临对象实例过多的问题。”

(P276) 外观模式是屏蔽复杂性的,很多时候代理模式的控制本身也就是对各种复杂性的屏蔽,只不过外观处理的是一个逻辑上的“子系统”,而且其封装后的结果并没有具体抽象接口的要求,但在代理模式中客户程序需要的接口明确化了;

(P415) 同样是排序算法,考虑到 CPU 和内存容量的不同, 在手机和在PC计算机上可能采用不同的排序算法;

(P418)

排序算法选择:

1. 实现简单 —— 冒泡排序策略;

2. 比较快速地对小数据量进行处理 —— 快速排序策略;

3. 大数量 —— 外排序;

(P445) ORM —— Object —— Relation Mapping ;

(P457)

—— DataSet的优势:——

1. 使用 offline 的内存数据库;

2. 可以装载多个 DataTable;

3. 与 XML 的天然集成;

4. 有比较完善的内存数据筛选、查询机制;

5. 同时可以维护多个数据对象间的关联关系;

6. 尤其对于两层的数据应用而言,提供了完善的数据使用周期支持;

—— DataSet的劣势 ——

1. 数据的业务语义不甚清晰,客户程序必须了解字段的组成才能提取字段项;

2. 传输中有很多“冗余”的信息在传递;

3. 弱类型的数据结构在开发过程中不如强类型的数据实体使用方便;

4. 容量有限制;

5. 并非标准的数据结构,在 WS-* 调用中考虑到互操作性要求,需要必要的转换;

(P462) GOF 给我们最大的启示就是把紧密引用在一起的对象通过抽象或增加第三个对象的办法拆解得更加松散;

(P482) 模式的使用都是针对某些特定变化而引入的;

(P495)

MVC 模式设计是 M 相对 V 稳定的基础上考虑的,但如果 M 本身相对 V 变化更快, MVC 模式的应用效果就会打折扣。它的主要优势在于同一 M 可以支持很多不同的 V ,而且会通过观察者模式或 C 协助 V 完成信息的更新,但它也同样存在劣势:

1. 对于 V 相对单一或简单的情况而言,MVC 本身引入了更多的复杂性;

2. 更新的成本相对增加了,原本可以在一个方法中完成的更新要被分拆为 M/V/C 三类对象的协作;

(P499) “管道 - 过滤器”(Pipeline - Filters) 模式是一种通过组织一系列连续过滤条件完成既定处理的模式;

(P563) “高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。”

(P570) .NET 3.0 之后对于远程调用技术集中到 WCF 框架下;

(P574) WCF 其实在用面向对象化的方式解决面向服务的开发问题;

(P628) 在领域驱动设计中 (DDD : Domain Driven Design) 中,实现业务逻辑层主要有 Transcation Script、Domain Module 和 Table Module 三种模式;

(P644) 不兼容接口间适配器 (Adapter) 是个不错的途经;

转载于:https://blog.51cto.com/tianjing/907602

《设计模式 基于C#的工程化实现及扩展》 - 书摘精要相关推荐

  1. 推荐一本好书《 Java程序员 上班那点事儿》

    Java程序员  上班那点事儿 阅读之后 明白上班那点事儿 如果你没事 就看看上班那点事儿 让你明白上班不是事儿 送上试读地址:Java程序员 上班那点事儿

  2. 程序员应该知道的——《Java程序员上班那点事儿》精华

    (written in 2010-03-31 19:52:19 ) 两个星期之前我就已经把钟声写的<Java程序员上班那点事儿>看完了,但是因为最近迷上了玩一个让我不长进的游戏,所以一直没 ...

  3. 对《java程序员上班那点事》笔者对数组占用内存质疑

    1.<java程序员上班那点事>笔者对数组占用内存的描述 2.实际测试情况: /*** 测试一维数组占用内存*/public static void testOneArray() {Sys ...

  4. Java程序员上班“划水”向阿里猛投简历,两次被刷后,最终敲定“菜鸟网络”的岗位,定级P6.

    概述 怀揣着对大厂的梦想,程序员小王本想在工作两至三年的时间内能进入大厂,奈何竞争是如此激烈.而且进入大厂并不容易,曾经一度被腾讯.京东.美团等大厂刷下来,甚至有些公司连面试机会都没给.今年恰好趁着疫 ...

  5. java程序员学习前了解的主要大纲

                  程序员首先学习应该先下载一系列学习辅助软件:有道云笔记   思维导图freemind(先安装JDK)   火狐(安装火狐需要安装插件firebug)    它能 更好地帮助 ...

  6. Java程序员,上班那点事儿--程序员也是一般人

    误区4:程序员不是一般人 本文为清华大学出版社<Java程序员,上班那点事儿>节选. 从一个做会计的女生对程序员的误解说起: 那天和一个做会计的女生聊天,问她对程序员或者编程工作的看法.她 ...

  7. 《Java程序员,上班那点事儿》图书有奖征文图书奖品名单

    51CTO读书频道,为了让大家更好的学习<Java程序员,上班那点事儿>,特举办了"  <Java程序员,上班那点事儿>图书有奖征文".优秀书评奖奖品是电子 ...

  8. 《Java程序员,上班那点事儿》序——刘博

    <Java程序员,上班那点事儿>序--刘博 清华大学出版社<Java程序员,上班那点事儿>作者:钟声        我是学软件的.二十六年前我大学毕业的时候担心的是能不能分配一 ...

  9. 《Java程序员,上班那点事儿》书名的由来

    <Java程序员,上班那点事儿>书名的由来 ----本书作者的自言自语   <Java程序员,上班那点事儿>这本书的出版真可谓是一波三折,但不管怎么说这本书快要出版了. 老实讲 ...

  10. 《Java程序员,上班那点事儿》目录

    第一卷 生存法则 第1章 知己知彼,百战不殆 1.1 问题1:这个职业赚钱吗?赚多少钱      1.1.1 修炼第一层境界:剑指四方,试问天下谁与争锋        1.1.2 修炼第二层境界:世界 ...

最新文章

  1. 数据结构之python实现顺序表
  2. 图片出处识别_图片模糊怎么变清晰?方法都在这里了
  3. Android Fragment 监听返回键
  4. 在单节点和多节点上的Hadoop设置
  5. SQL-22 统计各个部门对应员工涨幅的次数总和,给出部门编码dept_no、部门名称dept_name以及次数sum...
  6. springboot 创建地址_使用 SpringBoot Admin监控Spring Boot 服务
  7. 苹果开始尝试直接从自家零售店发货 更快送达消费者手中
  8. appium+python自动化-adb shell模拟点击事件(input tap)
  9. 解决Android拍照保存在系统相册不显示的问题
  10. 如何对物联网数据进行大数据分析
  11. 【bzoj4940】这是我自己的发明
  12. e4a生成r.java错误,编译时候出现英文错误
  13. 垃圾回收机制,垃圾回收的几种方法以及
  14. 【luogu P1156 垃圾陷阱】 题解
  15. Vue移动端项目模板h5
  16. matlab中国官网下载,首页 - MATLAB中文论坛
  17. 我在华为度过的 “两辈子”(学习那些在大厂表现优秀的人)
  18. 截止失真放大电路_仿真实验1 共射放大电路 视频演示
  19. 数字万用表常用功能使用
  20. 人物连连看 python课程设计 pygame学习

热门文章

  1. 分类模型的评估方法-召回率(Recall)
  2. 【阿里云课程】1小时快速掌握Caffe核心功能,完成完整的项目实践
  3. 【图像分割模型】编解码结构SegNet
  4. 中国福建省动漫产业建设开发现状及未来策略规划调研报告2021-2027年
  5. 传统外贸不好做,为什么不来做跨境电商?
  6. Java笔记:与系统交互、系统相关的类,Object类
  7. ubuntu系统阅读CHM文档的最终解决方案
  8. HackerRank Super Six Substrings dp
  9. Java web 初入
  10. C#操作Excel文件(转)