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 基于扩展开放

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

函数式编程

FIT软件开发的更多相关文章

  1. PSP个人软件开发工具

    (您的阅读是我的荣幸,如有不满之处请留言指正!) 尚未完善.....工作中 为开发人员提供一个PSP工具,简化时间记录工作:同时提供数据使用的工具,帮助开发人提高估算能力.   PSP个人软件开发工具 ...

  2. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

    第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...

  3. 敏捷软件开发VS传统软件工程

    敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同 ...

  4. Atitit.软件开发的三层结构isv金字塔模型

    Atitit.软件开发的三层结构isv金字塔模型 第一层,Implements 层,着重与功能的实现.. 第二次,spec层,理论层,设计规范,接口,等.流程.方法论 顶层,val层,价值观层,原则, ...

  5. BZOJ 1221: [HNOI2001] 软件开发

    1221: [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1428  Solved: 791[Submit][Stat ...

  6. Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发

    在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和 ...

  7. [转] Agile Software Development 敏捷软件开发

    原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 ...

  8. 高质量,高效率的多国语言软件开发(Web/PC/Mobile),使用接口约束/调用不同语言资源

    偶然间翻出了几年前写的一个小程序,把当时的资料整理整理分享一下. 当时为了给自己的软件实现多国语言功能,而开发的辅助工具:SE String Resource. 这是当时基于自己另一款 IDE 软件抽 ...

  9. Atitit.软件开发的几大规则,法则,与原则Principle v3

    Atitit.软件开发的几大规则,法则,与原则Principle  v31.1. 修改历史22. 设计模式六大原则22.1. 设计模式六大原则(1):单一职责原则22.2. 设计模式六大原则(2):里 ...

  10. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

随机推荐

  1. KingbaseES 支持pivot and unpivot 功能

    KingbaseES 通过扩展插件支持了pivot 和unpivot 功能.以下以例子的方式介绍. 一.功能介绍 创建扩展: create extension kdb_utils_function; ...

  2. KingbaseES R6 集群备库网卡down测试案例

    数据库版本: test=# select version(); version ------------------------------------------------------------ ...

  3. LIKE与等式查询比较

    我们知道 char 是定长类型的数据,如果数据长度小于定义的长度,会在字符串尾部加上空格.而对于空格的处理,对于等式匹配,或length等,会忽略空格.而对于like 或模式匹配,空格不能忽略. 一. ...

  4. token总结

    token 总结 1. token 和SessionID 的区别 Token机制相对于Cookie机制又有什么好处呢? 支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的 ...

  5. 解决CDH 访问权限问题

    CDH 6.2 安装好以后,直接使用root 或者 其他账号执行spark-shell 会报权限错误 22/01/04 17:46:28 ERROR spark.SparkContext: Error ...

  6. Python图像处理丨认识图像锐化和边缘提取的4个算子

    摘要:图像锐化和边缘提取技术可以消除图像中的噪声,提取图像信息中用来表征图像的一些变量,为图像识别提供基础. 本文分享自华为云社区<[Python图像处理] 十七.图像锐化与边缘检测之Rober ...

  7. 类似微信聊天小程序-网易云信,IM DEMO小程序版本

    类似微信聊天小程序-网易云信,IM DEMO小程序版本 代码地址: https://github.com/netease-im/NIM_Web_Weapp_Demo 云信IM DEMO 小程序版本 ( ...

  8. 使用容器运行的minio配置https(TLS)访问

    使用certgen生成证书 下载地址:https://github.com/minio/certgen/releases/tag/v0.0.2 下载地址:https://files.cnblogs.c ...

  9. 使用port-forward访问集群中的应用程序,以Redis 为例

    为Redis创建Deployment和Service 创建 Redis Deployment,YAML文件如下: apiVersion: apps/v1 kind: Deployment metada ...

  10. flask+gunicorn+nginx部署

    安装nginx和gunicorn yum install nginx pip3 install gunicorn flask项目配置 #main.py from flask import Flask ...