《架构师》第二周命题作业

用户头像
关注
发布于: 2020 年 06 月 17 日

作业一、

依赖倒置原则:

1、高层模块不应该依赖于底层模块,二者都应该依赖于抽象。

2、抽象不应该依赖于细节,细节应该依赖于抽象。

3、依赖倒置原则是创建可重用框架的核心。

著名的 Hollywood 原则:

Don't call us, we'll call you.

在依赖倒置原则里,框架负责高层模块和抽象的定义,用户根据抽象定义实现功能。当用户模块部署后,用户模块应当等待被高层模块通过抽象定义执行调用。这种逻辑就像是 Hollywood 的原则,因此依赖倒置原则有时也会被称为好莱坞原则。

作业二、

联盟链 Hyperledger Fabric 的 Chaincode 框架

在 Hyperledger Fabric 中,我们可以定义自己的 chaincode 提交给 Fabric。chaincode 的实例无需关心自己何时被调用,它只需根据约定要实现 invoke 函数。Fabric 联盟链会在用户执行合约时调用到 chaincode。

  • 作为高层模块的 Hyperledger Fabric 联盟链基于抽象的 Invoke 函数的约定,知道如何调用 chaincode 实例。

  • 作为低层模块的 chaincode 实例代码依赖 Invoke 函数的约定,被动等待 Fabric 调用。

  • 二者均依赖与 Invoke 函数的约定。

func (s *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
fcn, params := stub.GetFunctionAndParameters()
...
}



作业三、

优化方案:

为了防止应用程序或错误调用到 reBuild 方法或者远程系统调用执行了不应该做的操作。这里基于接口分离的原则,把原本已经在 cache 中实现的方法分离到 ICache 和 Rebuilder 接口中。

  • 应用程序依赖 ICache 接口。

  • 远程系统调用依赖 ReBuilder 接口。

类图:



发布于: 2020 年 06 月 17 日 阅读数: 27
用户头像

关注

还未添加个人签名 2018.06.14 加入

还未添加个人简介

评论

发布
暂无评论
《架构师》第二周命题作业