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 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...
随机推荐
- vscode主题开发
vscode主题开发教程 https://blog.csdn.net/Suwanqing_su/article/details/105945290 个人配置结果 主题代码 到Vscode放插件的目录中 ...
- 用compose安装tp框架提示警告putenv
PHP Warning: putenv() has been disabled for security reasons in phar://C:/ProgramData/ComposerSetup ...
- avue常用场景记录
接手的一个项目使用的是avue这个傻瓜式的专门给后端人员用的框架,文档不够友好,使用起来各种蛋疼(咱专业前端基本上不使用).为此,专门记录一下.当前avue版本2.8.12,如果要切换avue的版本, ...
- 发布日志- kratos v2.1.4 发布!
v2.1.4 release https://github.com/go-kratos/kratos/releases/tag/v2.1.4 New Features feat(registry/co ...
- 5.Ceph 基础篇 - 认证
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485272&idx=1&sn=4b27c357 ...
- MySQL集群搭建(4)-MMM+LVS+Keepalived
1 LVS 介绍 1.1 简介 LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统.本项目在 1998 年 5 月由章文嵩博士成立, ...
- Gitlab基础知识介绍
GitLab架构图 Gitlab各组件作用 -Nginx:静态web服务器. -gitlab-shell:用于处理Git命令和修改authorized keys列表. -gitlab-workhors ...
- 利用msg_msg实现任意地址读写
利用msg_msg实现任意地址读写 msgsnd和msgrcv的源码分析 内核通过msgsnd和msgrcv来进行IPC通信.内核消息分为两个部分,一个是消息头msg_msg(0x30),以及后面跟着 ...
- 如何生成均匀随机数 C++
#include <iostream> #include <fstream> #include <cstdlib> #include <ctime> u ...
- P8548 小挖的买花 方法记录
原题链接 小挖的买花 题目背景 小挖喜欢买花,但是 ta 太懒了!所以这个任务全权交给了你. 题目描述 花店里只有 \(n\) 株花,每一株花都有三个属性:价格 \(cost_i\).美丽度 \(be ...