FIT软件开发
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软件开发的更多相关文章
- PSP个人软件开发工具
(您的阅读是我的荣幸,如有不满之处请留言指正!) 尚未完善.....工作中 为开发人员提供一个PSP工具,简化时间记录工作:同时提供数据使用的工具,帮助开发人提高估算能力. PSP个人软件开发工具 ...
- nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...
- 敏捷软件开发VS传统软件工程
敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同 ...
- Atitit.软件开发的三层结构isv金字塔模型
Atitit.软件开发的三层结构isv金字塔模型 第一层,Implements 层,着重与功能的实现.. 第二次,spec层,理论层,设计规范,接口,等.流程.方法论 顶层,val层,价值观层,原则, ...
- BZOJ 1221: [HNOI2001] 软件开发
1221: [HNOI2001] 软件开发 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1428 Solved: 791[Submit][Stat ...
- Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发
在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和 ...
- [转] Agile Software Development 敏捷软件开发
原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 ...
- 高质量,高效率的多国语言软件开发(Web/PC/Mobile),使用接口约束/调用不同语言资源
偶然间翻出了几年前写的一个小程序,把当时的资料整理整理分享一下. 当时为了给自己的软件实现多国语言功能,而开发的辅助工具:SE String Resource. 这是当时基于自己另一款 IDE 软件抽 ...
- Atitit.软件开发的几大规则,法则,与原则Principle v3
Atitit.软件开发的几大规则,法则,与原则Principle v31.1. 修改历史22. 设计模式六大原则22.1. 设计模式六大原则(1):单一职责原则22.2. 设计模式六大原则(2):里 ...
- Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义
Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...
随机推荐
- 第四十八篇:webpack的基本使用(二) --安装和配置webpack-dev-server插件
好家伙, 1.webpack中的默认约定 默认的打包入口文件为src -->index.js 默认的输出文件路径为dist -->main.js 既然有默认,那么就说明肯定能改 2.en ...
- Makefile 文件的编写
目录 目录 Makefile 编写规则 Makefile 编写规则 生成的目标文件:依赖文件 生成目标文件所需执行的动作(注:命令行前需加Tab推进) 例: VPATH=inc src main:ma ...
- 自定义View4-塔防小游戏第一篇:一个防御塔+多个野怪(简易版)*
塔防小游戏 第一篇:一个防御塔+多个野怪(简易版) 1.canvas画防御塔,妖怪大道,妖怪行走路线 2.防御塔攻击范围是按照妖怪与防御塔中心距离计算的,大于防御塔半径则不攻击,小于则攻击 ...
- KingbaseES 转义字符
在SQL标准中字符串是用单引号括起来的,在KingbaseES中遵守了该标准,如果在字符串中需要使用到单引号,就需要对其进行转义. 方式一:使用E和反斜杠进行转义 方式二:直接用一个单引号来转义 在K ...
- git rebase合并多个commit总结
git rebase 合并多个commit 方法 在开发过程中,有时一个任务会分几次commit提交,这样可能对于有些分支要cherry pick时会比较麻烦,这是我们可以通过git rebase 将 ...
- 往harbor上传镜像
下载镜像并给镜像打tag [root@hdss7-200 harbor]# docker pull nginx:1.7.9 [root@hdss7-200 harbor]# docker images ...
- 水晶报表导出pdf文件
/// <summary> /// 导出pdf文件 /// </summary> /// <param name="mjsReport">报表文 ...
- JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
一.前言 我们在日常学习中,对一个java代码有问题,不知道jvm内部怎么进行解析的时候:有个伟大壮举就是反编译,这样就可以看到jvm内部怎么进行对这个java文件解析的!我们可以使用JDK自带的ja ...
- 02 uniapp/微信小程序 项目day02
一.分类 1.1 页面布局 首先创建cate的分支 定义基本结构,因为是两个需要滚动的区域,所以这里要用到组件 scroll 这个组件如果是y scroll那就要固定高度,x scroll那就要固定宽 ...
- Android类加载流程
背景 由于前前前阵子写了个壳,得去了解类的加载流程,当时记了一些潦草的笔记.这几天把这些东西简单梳理了一下,本文分析的代码基于Android8.1.0源码. 流程分析 从loadClass开始,我们来 ...