jjzjj

solid-principles

全部标签

java - 这个简单工厂是否违反了开闭原则?

这个简单工厂是否违反了开闭原则?每次需要创建新的具体产品时,SimpleProductFactory都需要更改,但它遵循单一职责原则,因为这是它永远更改的唯一原因。它的唯一目的是让客户端不违反开放封闭原则,所以我想它本身不会违反,因为显然某处需要这段代码。我对更改工厂不感兴趣,但对这个具体示例是否违规不感兴趣。产品interfaceProduct{publicintgetPrice();}牛奶classMilkimplementsProduct{publicintgetPrice(){return5;}}筹码classChipsimplementsProduct{publicintge

java - java核心的Iterator违反单一职责原则

为什么java.util.Iterator接口(interface)有方法remove()?当然有时候这种方法是必要的,而且大家都已经习惯了它的存在。但实际上迭代器的主要和唯一目标只是提供访问容器元素。当有人想为此接口(interface)创建自己的实现,但由于任何原因不能或不想提供删除元素的能力时,他将被迫抛出UnsupportedOperationException。抛出该异常通常表示架构没有经过深思熟虑或存在设计缺陷。我真的不明白为什么会做出这样的决定。而且我猜它会更正确地分离一个特定的子接口(interface)来支持可选的方法:为什么remove()是Iterator的一部分

官方统计2023年收入最高的编程语言:Solidity学习入门指南:看这一篇就够了!前置工作的方法全部在这里!

  苏泽大家好这里是苏泽一个钟爱区块链技术的后端开发者本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结如果喜欢拜托三连支持~苏泽在下面给大家整理好了完整的solidity的学习路线C站首发清晰无比!讲之前先看一份报告吧据最新发布的DevJobsScanner报告此次公布的2023年度(2022年10月1日到2023年10月1日)薪酬最高的10种编程语言排行,揭示了当前IT行业对于各类编程语言的需求以及对应的薪酬水平。solidity荣登榜首 而且国家也有明确政策表明支持区块链行业的发展这里有一篇关于我国政策的解读http://t.csdnimg.cn/hgZWRSoli

区块链web3智能合约Solidity学习资源整理

简单说明:Solidity是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了C++,Python和Javascript语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。Solidity中文官方文档:https://solidity-cn.readthedocs.io/zh/develop/https://learnblockchain.cn/docs/solidity/index.html在线remix编译器:https://remix.ethereum.org/目前尝试Solidity编程的最好的方式是使用Remix(需要时间加载,请耐心等待)。Remix是一个基于

java - 如何避免 Java 中的 switch-case 语句

这个问题在这里已经有了答案:Convertingmany'ifelse'statementstoacleanerapproach[duplicate](7个答案)关闭6年前。我有一个TriggerType的枚举,可以在其中添加不同的触发器publicenumTriggerType{meta,data,list,toggle}这些触发器类型在不同的处理程序(例如组件、仪表板等)中使用,以通过switch-case识别在处理程序内部触发了哪个触发器,例如下面给出了通过switch-case使用触发器的ComponentHandler的代码片段@OverridepublicTriggerRe

【Solidity】Remix在线环境及钱包申请

好久没有学习区块链方面的知识了,目前通过自学大致掌握了Fabric联盟链的搭建,链码编写、部署,api调用,可以独立开发出一些基于fabric的应用,感觉开发出去中心化的应用还是很有意思的,因为他与之前开发的ssm项目这种传统中心化的app相比具有自己独特的优点。第一次开发出来很有成就感,并且还申请了自己的软著。但是最近看论文,感觉有很多的实验都是用公链做的,基本上都是Ethereum,使用的是Solidity语言来编写的智能合约,所以自己就学习了一下。希望通过笔记给自己带来更深刻的学习印象。1.什么是Ethereum?Ethereum是公有链的一种,中文称之为以太坊。和区块链类似,他也有自己

Solidity攻击合约:“被偷走的资金”

        在以太坊智能合约开发中,Solidity是最常用的编程语言。然而,由于代码编写不当或缺乏安全意识,合约可能面临各种攻击。本文将通过一个简单的Solidity合约示例,展示一个潜在的攻击合约,并分析其相对于原本合约的危害以及攻击是如何实现的。目录一、原本合约示例二、攻击合约示例三、危害及攻击实现危害:攻击合约的危害在于,攻击者可以构造一个交易。攻击实现:攻击者会按照以下步骤执行攻击:总结一、原本合约示例假设我们有一个简单的“存款合约”(SavingsContract),允许用户向合约发送以太币(ETH),并可以后续提取。代码如下://SPDX-License-Identifier

solidity语言语法总结

前言版权声明:表示合约采用MIT许可证:(补充:MIT许可证是一种宽松的开源许可证,允许用户自由使用、修改和再发布代码,只需要包含原始许可声明即可。)//SPDX-License-Indentifier:MIT版本声明:(用来指示编译器按照solidity的哪一个版本来编译智能合约)pragmasolidity^0.8.0;//指定固定版本:可以使用固定的版本号来声明Solidity的版本pragmasolidity0.8.0;//指定兼容版本范围:有时候我们希望指定一个兼容版本的范围,可以使用^符号,表示与指定版本兼容的范围以下例子(>=0.8.0,=,,=0.6.0版权声明和版本声明在智能

java - 在java中扩展参数化工厂方法

我是OOP的新手,正在学习设计模式,所以我编写了一些简单的代码来尝试工厂方法,一切似乎都很好,除非我想添加另一个子类型。到目前为止,这是代码:publicinterfacePerson{publicStringgetDescription();}publicclassAdultimplementsPerson{@OverridepublicStringgetDescription(){return"IamanADULT";}}publicclassChildimplementsPerson{@OverridepublicStringgetDescription(){return"Iam

solidity案例详解(六)服务评价合约

 有服务提供商和用户两类实体,其中服务提供商部署合约,默认诚信为true,用户负责使用智能合约接受服务及评价,服务提供商的评价信息存储在一个映射中,可以根据服务提供商的地址来查找评价信息。用户评价信息,服务提供商的评价信息会随之更新。服务提供商查询自己的总评分,评价次数以及所有用户评价内容使用了Solidity语言提供的abi.encodeWithSignature函数将评价信息打包成交易。然后调用call函数发送交易,并等待交易确认。最后,将用户评价信息上传至智能合约,以便在区块链上进行永久存储 各合约功能: 1.合约的构造函数在合约部署时执行,将合约创建者的地址设为服务提供商的地址,并将其