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. multiprocessing 让子进程忽略信号,手动关闭子进程

    起因 同事想要写一个代码,主进程中监听SIGINT.SIGTERM信号退出,并关闭启动的子进程,代码类似这样 import signal import sys import time from mul ...

  2. Fast.Framework ORM 于中秋节后 正式开源

    Fast Framework 作者 Mr-zhong 开源项目地址 https://github.com/China-Mr-zhong/Fast.Framework QQ交流群 954866406 欢 ...

  3. C#,使用FindWindow和FindWindowEx查找窗体和控件

    函数: // Find Window // 查找窗体 // @para1: 窗体的类名 例如对话框类是"#32770" // @para2: 窗体的标题 例如打开记事本 标题是&q ...

  4. 输入法词库解析(四)百度分类词库.bdict(.bcd)

    前言 .bdict 是百度的分类词库格式,可以在 https://shurufa.baidu.com/dict 下载. 手机百度的分类词库格式 .bcd 是一样的,可以在 https://mime.b ...

  5. Python数据科学手册-Numpy数组的计算:广播

    广播可以简单理解为用于不同大小数组的二元通用函数(加减乘等)的一组规则 二元运算符是对相应元素逐个计算 广播允许这些二元运算符可以用于不同大小的数组 更高维度的数组 更复杂的情况,对俩个数组的同时广播 ...

  6. MySQL8.0报错:Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

    MySQL8.0.16版本中新增了一个system_user帐户类型,当新增用户并赋予权限时 mysql> create user 'proxysql'@'192.168.20.%' ident ...

  7. ProxySQL(9):ProxySQL的查询缓存功能

    文章转载自: https://www.cnblogs.com/f-ck-need-u/p/9314459.html ProxySQL支持查询缓存的功能,可以将后端返回的结果集缓存在自己的内存中,在某查 ...

  8. 采用docker方式安装ElastAlert,图形化配置告警规则----具体内容有删改,仅供查看

    1.创建几个文件夹保存ElastAlert相关配置信息,用来挂载到容器中使用 2.编写核心配置,创建 ${ELASTALERT}/config/config.yaml用来存储核心配置: 3.Elast ...

  9. 推送本地镜像到Dokcer Hub仓库

    # 登陆 [root@docker ~]# docker login # 注意:后面不输入网址 Login with your Docker ID to push and pull images fr ...

  10. OFD是什么

    OFD是什么? 原文链接:OFD是什么 OFD更多了解:OFD (Open Fixed layout Document/开放版式文档) OFD格式文件介绍 OFD(Open Fixed layout ...