- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我阅读了 Robert Martin 关于接口(interface)隔离原则的文章 here .在文章的最后,在解决 ATM UI 架构的问题时,他说:
Consider also that each different transaction that the ATM can perform is encasulated as a derivative of the class Transaction. Thus we might have classes such as
DepositTransaction
,WithdrawlTransaction
,TransferTransaction
, etc. Each of these objects issues message to theUI
. For example, theDepositTransaction
object calls theRequestDepositAmount
member function of theUI
class. Whereas theTransferTransaction
object calls theRequestTransferAmount
member function ofUI
. This corresponds to the diagram in Figure 5.Notice that this is precicely the situation that the ISP tells us to avoid. Each of the transactions is using a portion of the
UI
that no other object uses. This creates the possibility that changes to one of the derivatives ofTransaction
will force coresponding change to theUI
, thereby affecting all the other derivatives of Transaction, and every other class that depends upon theUI
interface.
Transaction
之一的导数发生变化,则
UI
已更改
以及使用 UI
的任何其他类也变了。
This unfortunate coupling can be avoided by segregating the UI interface into induvidual abstract base classes such as
DepositUI
,WithdrawUI
andTransferUI
. These abstract base classes can then be multiply inherited into the finalUI
abstract class. Figure6 and Listing 6 show this model.
It is true that, whenever a new derivative of the Transaction class is created, a coresponding base class for the abstract UI class will be needed. Thus the UI class and all its derivatives must change. However, these classes are not widely used. Indeed, they are probably only used by main, or whatever process boots the system and creates the concrete UI instance. So the impact of adding new UI base classes is contained.
UI
怎么可能?的改变,但没有其他类也改变了?毕竟,如果某种
TransactionX
使用
XUI
和
XUI
是
UI
的父类(super class)和
UI
被更改(因为某些
ZUI
),然后(就我而言)编译器需要重新编译所有使用
XUI
的类同样,因为 vtable(就 C++ 而言)或者某些函数基地址已因
UI
的更改而更改.有人可以帮我弄干净吗?
最佳答案
if some kind of TransactionX uses XUI and XUI is superclass of UI and UI is changed, then (as far as i'm concerned) compiler needs to recompile all the classes that use XUI too
TransactionX
取决于
XUI
.所有其他
TransactionY
和
YUI
不受影响,也不需要重新编译。
because vtable (in terms of C++) or maybe some function base addresses have been changed by change of UI.
main
(或文本中的
ui_globals.cc
)这是
X/Y/Z UI
的地址获取接口(interface)传递给
Transaction X/Y/Z
实例。
关于c++ - 无法理解 Robert Martin 的 ISP 文章中的 "contradiction",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61632204/
以下文本来自 Robert Sedwick 的算法书中的快速排序部分。 通过选择数组的左、中、右三个元素,我们可以将哨兵合并到这个方案中。对三个元素进行排序,然后在中间与a[r-1]交换一个,然后在a
我正在考虑实现 Robert Martin 的 Clean Architecture在一个项目中,我试图找出如何处理非平凡用例。 我发现很难将架构扩展到复杂/组合的用例,尤其是参与者是系统而不是用户的
在这种情况下,我需要在 .Net 中创建一个可以从 delphi 程序调用的非托管 DLL。我一直在做一些研究,并找到了 Robert Giesecke 的库 (RGiesecke.DllExport
我想知道寻边“罗伯茨交叉运算符”背后的概念 - 它是如何工作的?如何实现? (请不要使用代码;我想自己编码。) 最佳答案 您遍历源图像中的每个像素,并根据源像素及其东、南和东南相邻像素的值计算目标图像
首先,我在 2D 平面中实现了普通的、缓慢的 Poisson Disk Sampling 算法,它工作得很好。这个慢速版本会计算所有点之间的距离,并检查您希望放置的点与所有其他点之间的距离是否至少为
我正在阅读 Robert Sedgewick 写的关于算法的书。 public static void sort(Comparable[] a) { // Sort a[] into increa
我正在尝试实现 Clean Architecture由罗伯特·马丁描述。更具体地说,我正在使用 VIPER这是 Clean Architecture 的 iOS 版本。 我遇到的问题如下: 用户开始查
根据经验,这本书对于学习算法创建有多好? 最佳答案 我看过的最常见的算法书是Cormen, Leiserson, Rivest, and Stein's Introduction to Algorit
我正在阅读 Robertsedwick 的 C++ 排序算法 Property 1: Insertion sort and bubble sort use a linear number of com
我尝试使用 line_profiler 模块来获取 Python 文件的逐行配置文件。这是我到目前为止所做的: 1) 从 pypi 安装 line_profiler通过使用 .exe 文件(我在 Wi
我已经使用 np.fft 在 Python 中实现了信号处理 FFT 算法(太简单了)。现在我正在使用整数算法在 C 中完成此操作。经过一番研究,我发现互联网上最流行的 C 整数 FFT 库之一是 R
我已经成功使用了 Roberts UnmanagedExportLibrary.zip从 Delphi 2007 调用 .NET 2/3.5 程序集。 但是,当我使用 VS2010 将 C# 程序集重
对于新手问题,我深表歉意。我正在尝试在 Robert Sedgewick 和 Kevin Wayne 的第 4 版算法书中给出的 Eclipse 中运行 Java 程序:https://algs4.c
所以,最近,出于好奇,我买了 CLRS 的《算法导论》一书。当我开始阅读这本书时,我注意到书中一些非常典型的算法是以非常不同的方式实现的。 给定 CLRS 的快速排序实现与流行的快速排序 Hoare
我尝试使用 Robert Giesecke 的非托管导出在 C# (VS2010) 中创建非托管 dll。这是我的测试代码: using RGiesecke.DllExport; namespace
我们在 Delphi 应用程序中使用 Robert Giesecke 出色的非托管导出库已经有一段时间了。我们刚刚升级到 Visual Studio 2015,它似乎不再工作了——我可以在 VS201
我阅读了 Robert Martin 关于接口(interface)隔离原则的文章 here .在文章的最后,在解决 ATM UI 架构的问题时,他说: Consider also that each
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我刚刚提出并获得了我的问题的答案:“无法使用非托管导出返回自定义类型实例 (Robert Giesecke)”-> can't return custom type instance with unm
这是一个关于函数只做一件事的概念的问题。如果没有一些相关的上下文上下文就没有意义,所以我会在这里引用它们。它们出现在第 37-38 页: To say this differently, we wan
我是一名优秀的程序员,十分优秀!