云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

全站加速_服务器挖矿_0元

小七 141 0

全站加速_服务器挖矿_0元

大家好,好评返现怎么操作,

这是我的第一篇博文,我真的很想给自己做一个简短的介绍。我和家人住在德国的英格尔海姆。位于美因茨附近的一个小镇,位于美丽的莱茵海森葡萄酒产区(莱茵兰-帕拉蒂纳州)。

我工作了20年,主要从事会计和控制领域的职能顾问。但是我有一个黑暗的一面…我喜欢编程

最近几年,我已经改变了我的编程风格,大数据现状,从过程式风格到更面向对象的风格。实际上,这是一个非常艰难的转变,我花了一段时间才完全理解它背后的概念。

多年来,我意识到我的开发仍然没有得到很好的设计,即使它们是面向对象的。每次有新的需求出现时,我都要修改很多现有的代码。我还想确保新代码不会破坏现有代码。此外,我还在寻找某种方法,在这种方法中,您可以在自己的系统上进行开发,而不是在最终的客户环境中进行开发,但仍然能够使用适当的测试数据测试代码。经过一段时间的研究和学习,我发现了所谓的实体设计原则和测试驱动开发。因为这一次我尽可能地遵循这些原则。

最近我发现了一个概念,我认为这是值得尝试的。这里描述了最初的设计https://www.cuttingedge.it/blogs/steven/pivot/entry.php?内径=91。我已经把这里的例子转换成ABAP,并认为其他人可能也对这个设计感兴趣。所以这里是

整个概念背后的基本思想是,方法应该要么执行一个操作(命令)要么返回数据(查询),但不能两者兼而有之。这个概念也称为命令查询分离(CQS)。我们现在要看一下命令站点。

我们首先需要一个代表我们命令的界面。

这个看起来并不复杂。接下来我们需要的是命令处理程序的接口。

我们现在可以将业务逻辑与数据解耦。命令处理程序现在对我们提供的命令进行操作。使用接口给了我们很大的灵活性,我们将在后面看到。

我们现在可以创建具体的命令。如您所见,物联网教室,我们的命令是一个纯数据对象,没有任何逻辑(Setter和Getter方法是可能的)。我们也可以为我们的数据创建一个数据引用,但是我决定也使用对象来表示数据。

这里是我们具体的命令处理程序的实现。

命令处理程序接收我们的命令并处理数据。这里唯一不好的是,我们必须转换为具体的命令类型(cmd?=i\u命令)。最初的C代码显示了某种类型的使用泛型的类型检查,这在ABAP中是不可用的。至少我在ABAP里什么也没找到。所以,如果有人知道有可能避免这里的铸造,请让我知道。

我们现在需要一个控制器,它知道如何操作。

处理程序将通过构造函数注入控制器

现在我们来到最有趣的部分。由于我们的命令处理程序是基于一个抽象,命令处理程序接口,大数据主要学什么,我们现在可以为处理程序创建一个简单的装饰器,这意味着我们可以添加额外的功能,如验证或实现横切关注点,如日志记录,而无需更改现有代码。

这只是一个简单的示例,但我认为您可以想象一下它有多强大。

我们所要做的就是用修饰的处理程序正确地设置处理程序。有关Decorator设计模式的详细信息,您可以在这里查看。

现在输出:

在我发现原来的博客文章后不久,我注意到已经有了对这个概念的正式描述。这个设计被描述为命令处理器模式。

我希望你会发现这个博客很有用,给你一些启发。另外,如果你发现一些可以改进或提高的地方,请告诉我。下一次我将展示查询部分的一个示例。

示例报告的完整源代码可以在这里找到。

致意,

Tapio

感谢分享您的帖子。

与大多数设计模式一样,主要关注点是:灵活性与复杂性。

请您详细介绍SAP中的一些实际使用案例好吗?

你好,Shai,

我主要关心的不是灵活性或复杂性,而是可维护性和可测试性。

我不知道这个设计是否在SAP标准环境中使用。但实际上,我在一个项目中使用了这种设计,在这个项目中,我必须为发布实现某种业务逻辑,一个命令处理程序,它是我的"行项目验证器"和"控制器"。

这里的要点是,我现在可以创建单元测试,从编码开始,测试我的业务逻辑,而不需要任何人一直在测试系统中做一些真实的发布。在这种情况下甚至不可能,因为缺少一些主数据设置(这听起来熟悉吗?)。我可以在我的测试类中创建这个设置,并且已经开始开发和测试逻辑。我还可以确定,如果以后的事情发生了变化,大数据存储技术有哪些,我可以通过为处理程序创建一个decorator来添加功能,而不会破坏代码。我认为这是一个巨大的优势。

致意,

塔皮奥

谢谢你的信息。

你说得对。这是一个重要的优势。

另一方面,它确实增加了一些复杂性,需要加以考虑。