Strategy模式的应用
2016-03-14 19:09:35 0 举报
Strategy模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户端而变化,从而提供了一种灵活的方式来组合和切换算法。 在实际应用中,Strategy模式可以用来解决复杂的问题,通过将问题分解成多个独立的部分,并为每个部分提供不同的解决方案来实现。例如,在排序算法中,可以使用Strategy模式来提供多种排序算法(如冒泡排序、快速排序等),并根据需要动态地选择要使用的算法。 总之,Strategy模式是一种非常有用的设计模式,它可以帮助我们更好地组织和管理代码,并提高代码的可维护性和可扩展性。
作者其他创作
大纲/内容
Request
-id:long-jsonrpc:String-method:String-params:List-bigepochService:BigepochService-Class responseType+send:T+sendAsync:CompletableFuture
监听事件:OnError(错误,重新连接),OnMessage(处理业务逻辑),OnClose()
发送交易
15.获取监听结果
Invocation
+contract:Contract+function:Function+args:Object[]
FunctionType
开始
13.回调CallBack
启动WebSocket Client
事件解析
方法参数签名与组装
通信层
Filter
-thisObj:T-topics:List
data 转换成十六进制字符串
Callback
void accept(TransactionExecResultExt tx)void exception(Exception exception)
12. 交易结果解析
NumericType
11.返回交易结果
Client
服务区块链开发包
区块链节点
account签名数据
TransactionReceiptProcessor
8.保存交易hash到缓存
3.发起事件监听
take队列超时检测
EthFilter
--
编解码层
7.返回交易hash
发送交易:1.不使用合约交易私钥、to账户地址、存证数据data2.调用合约方法交易合约abi、调用合约函数、合约函数参数、私钥、事件集合、to合约地址3.部署合约交易合约abi、合约bin、构造参数、私钥发起请求:1.调用合约方法合约abi、调用合约函数、合约函数参数、私钥、to合约地址2.发送http请求获取结果;
是否需要建立Filter
SingleTopic
-topic:String
RemoteCall
-callable:Callable+send():T throws Exception+sendAsync():CompeltableFuture +observable():Observable
参数组装数据
私钥签名
Function
+anonymous:boolean+constant:boolean+payable:boolean+name:String default \"\"+inputs:Param[] default new Param[0]+outputs:Param[] default new Param[0]+type:FunctionType+stateMutability:StateMutabiliType
DynamicArrayType
14.推送监听事件
输入(toAddress、data、account)
区块链网络
接口定义层
SubscriberLogInfo
-id:int-logInfo:LogInfo
基础接口
2.发起交易请求
Transaction
-hash:byte[]-nonce:byte[]-value:byte[]-receiveAddress:byte[]-gasPrice:byte[]-gasLimit:byte[]-data:byte[]-chainId:Integer-sendAddress:byte[]-rlpEncoded:byte[]-rawHash:byte[]-parsed:boolean default false
ManagedTransaction
LogInfo
+addreess:byte[]+topics:List+data:byte[]
5.数据签名
Bytes32Type
手机端SDK/有盾云慧眼系统
StringType
返回trxHash
Param
+indexed:Boolean+name:String+type:SolidityType
AddressType
服务开发包
区块链
发送交易时序图
BytesType
SolidityType
+name:String
发交易,不调用合约
密钥加解密
BoolType
回调
BigepochService
CallTransaction
FilterTopic
+getValue:T
abi解析
6.发起Http请求eth_sendRawTransaction
StaticArrayType
ListTopic
-topic:List
参数编码组装
异步回推
输入连接WebSocket 地址
1.建立WebSocket
-集成-区块链服务开发包
StateMutabilityType
IntType
Contract
+functions:Function[]+getByName(String name):Function+getConstructor():Function+getBySignatureHash(byte[] data):Invocation+parseEvent(LogInfo eventLog):Invacation
10.发起Http请求eth_getTransactionResultByHash
WrapAddress
-port:long-ip:String
webSocket协议接口
9.回推交易结果
UnsignedIntType
保存trxHash,并推到队列中
建立WebSocket通信
4.数据组装
根据trxHash,回调解析回推数据;
发送交易,eth_sendRawTransaction
Response
-id:long-jsonrpc:String-result:T-error:Error
建立Websocket连接
ArrayType
[交易Hash存在且 交易Hash存在时间timeout时间]
Loop
扩展接口
收藏
0 条评论
下一页