1.baidu,google 术和道

2.FIT: future integrated Technology

3.集体检视 > commiter

4.高内聚,低耦合 => 太极 => 存在上帝类或者散弹枪

5.open,close开闭原则 以我为主的设计思路 => 我跟别人都无关

6.lips 一切皆可以替换

7.DIP 我来定义游戏规则

eg:举一个杯子的列子

A调用B是谁依赖谁?B (错)

```

class Cup{

}

class Human {

  void hold(Cup cup)

}

Human => cup

```

```

interface Cup {

}

class GlassCup implements Cup {

}

class Human {

  void hold(Cup cup)

}

Human -> cup << GlassCup(实现)

Interface Human {

}

class Asian Implements Human {

}

永远不可能(不要)实现调用实现 => Asian 无法调 GlassCup

抽象调用抽象

Asian >> human ->Holdable -> Cup >> GlassCup

              -> phone >> HuaweiPhone

A =>B 

接口化之后,A调用B,表示 B依赖于A

Holdable 标准,得标准者得天下

(术)实现 Dependency Inversion 依赖倒置

             Inversion of Control 控制反转

             new B 的动作 Spring: IOC Contrainer 依赖注入

Genericable: 泛化接口

SPI 接口所有权是使用方

API 接口所有权属于实现方

standard 接口所有权属于标准

```

正方形是长方形 => 继承关系可能是貌合神离的

```

Class Rectangle {}

Class Squre extends Rectangle {}

void rectangle_size_should_be_20_when_width_5_height_4 (){

  //given

  rect.setWidth(5).setHeight(4);

  //when

  int size = rect.getSize()

  //then

  assert.equal(20,size)

}

TDD

```

polymorphicable  一切皆可以替换

Duck typing 里氏替换

is 是基于行为的

依赖皆为抽象

1.扩展可以替换

2.业务可以替换

3.韧性可以替换

SPI/Standard可以替换

API可以替换

eg

```

ATM: Deposit & withdraw money

Role Orientend interface Design  (面向角色接口设计)

Function based

```

大象模式 SPI 基于扩展开放

蚂蚁模式  各自实现自己的抽象

函数式编程

最新文章

  1. linux下用c实现ls命令
  2. html页面的CSS、DIV命名规则
  3. FFmpeg与libx264 x264接口源代码简单分析
  4. How to configure Veritas NetBackup (tm) to write Unified and Legacy log files to a different directory
  5. c中动态使用数组
  6. windows下脚本配置IP地址
  7. linux目录
  8. 【异构计算】OpenCL矩阵转置
  9. Spring各种注解标签作用详解
  10. PHP之路——Mysql多表查询
  11. Oracle 11g 完全卸载
  12. vbox安装mac os x
  13. angular2 表单验证
  14. Android TV开发总结(四)通过RecycleView构建一个TV app列表页(仿腾讯视频TV版)
  15. Nginx Upstream模块源码分析(上)
  16. django-restframework 处理跨域问题
  17. JS与CSS阻止元素被选中及清除选中的方法总结
  18. (转)Java按指定行数读取文件
  19. ZH奶酪:Python按行读取文件
  20. C# 用timer做成服务后 timer_Tick () 为什么不执行?

热门文章

  1. 第九十二篇:Vue 自定义指令
  2. K8S_三种Port区别总结
  3. .NET 实现启动时重定向程序运行路径及 Windows 服务运行模式部署
  4. Elasticsearch:使用 IP 过滤器限制连接
  5. mysql ERROR 1396 (HY000): Operation CREATE USER failed 解决办法
  6. Minio纠删码快速入门
  7. 配置Kubelet的垃圾回收
  8. Solutions:Elastic workplace 搜索:随时随地搜索所有内容 (二)
  9. Handler机制与生产者消费者模式
  10. PAT (Basic Level) Practice 1023 组个最小数 分数 20