- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试理解 SOLID 原则,尤其是依赖倒置原则。
这是SO answer解释得很好。
我想我已经明白我不能在我的类中创建类的任何实例。对吗?
但是如果我必须将一些内容保存到磁盘,我可以创建一个 System.IO.File 的实例吗?还是必须注入(inject)?
我不明白限制在哪里,如果我不能实例化我自己的类,或者我不能实例化 .NET Framework 类(或任何其他框架)。
更新:
我认为 File
是一个不好的例子,因为它被声明为静态的。
顺便问一下,这个原则是否适用于静态类?
最佳答案
SOLID 的 S 代表 SRP(Single Responsibility Principle)。一旦您让该类承担单一责任,您就不会通过直接在类中使用 System.IO.File
来违反它。
尝试抽象出使用 System.IO.File
的目的是个好主意。假设您需要它来生成日志。那么你可能会做这样的事情:
public interface IMyLogger
{
void GenerateLog(IEnumerable<string> content);
}
public class FileLogger: IMyLogger
{
public void GenerateLog(IEnumerable<string> content)
{
System.IO.File.WriteAllLines("C:/Log", content);
}
}
也许它不仅仅是一个日志,它是更重要的东西,比如生成一个文件以便其他系统/应用程序(甚至外部)读取它并做一些工作。
如果您尝试使用 DDD 方法,接口(interface)可能属于您的领域,而实现可能属于应用程序。然后将您的界面注册为服务并注入(inject)它。
需要 IMyLogger
的类实际上不需要知道日志是如何生成的,它只需要完成工作即可。
当您需要在域中的某些业务逻辑中发送电子邮件时,您可以应用相同的想法。不要直接连接到域内的 Exchange,而是创建一个接口(interface) INotifier
和一个实现它的 MailNotifier
以注入(inject)。
关于c# - .NET Framework 类的依赖倒置原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45213060/
这个问题在这里已经有了答案: Invert rounded corner in CSS? (11 个答案) 关闭 8 年前。 当我想到为我的链接制作标签(或标签)时,我正在处理我网站的 CSS。我在
我是 Flutter 的新手,我正在尝试编写一个库来允许用户平移/缩放他们的个人资料图片。 为了使其视觉化,我想用“倒置”的 ClipOval 堆叠他们的图片,以显示边界。 到目前为止,这是我得到的结
我正在为我的一个应用程序使用具有垂直滚动方向的 Collection View 。在这里,我想让我的 Collection View 在不使用任何 CGAffine 变换的情况下倒置显示。是否可以在
我正在构建一个应用程序,我需要在其中从自定义相机拍摄照片并且 View 是倒置或旋转的(当我上下移动它时,图片会横向移动)。 知道为什么会这样以及如何解决这个问题吗? 这是相机的代码: class P
我在 Bootstrap 中使用轮播,我的一些图片是颠倒的。我在我的图片配置中搜索,之前我尝试将它们颠倒过来但没有结果。你知道这个类或javascript函数吗?非常感谢。 标记 最佳答案 如我的
我是 Canvas 的新手,想知道: 使用倒笛卡尔坐标系的基本原理。 比如说,我需要在直方图中绘制一些值。是一种将 Canvas 框架旋转/映射到笛卡尔坐标系的简单方法。? 最佳答案 Canvas 是
在jsp中实现如图所示的金字塔, 代码如下: 大致思路如下: 1、先画出前5行。因为 i+空格数=总行数,所以第一行的空格数是 总行数-i(第几行),然后画出 *,*的数目=2*i-11;
使用 xcode 6.3.2 中的自动布局功能,我能够为 iPad 和 iPhone 调整我的 View 、按钮和文本字段。但是对于颠倒我的观点并没有改变,任何想法我们如何使用自动布局支持颠倒模式而不
继http://stackoverflow.com/questions/18766430/how-can-i-do-d3-svg-arc-within-a-given-map-projection之后
我在 Xcode 中使用 C++ 进行编程,我试图打印出一个数组,但所有打印出来的都是“\377”和一个颠倒的“?”在它的末尾。这是什么意思? 最佳答案 您可能以 UTF-16 生成了您在 Windo
我正在尝试用白色而不是黑色绘制标准 NSImage。下面的代码在当前 NSGraphicsContext 中以黑色绘制图像时效果很好: NSImage* image = [NSImage imageN
我正在学习p5 js并尝试制作一个简单的2d蛇游戏,但是当我按键盘上的向上箭头时,矩形(蛇仍然不存在)向下移动,当我按向下箭头时,它移动向上 function keyPressed() { if (k
我正在做的是通过 CIDetector 检测面部,我的图像来自 UIImagePickerController(从后置摄像头捕获图像)。我可以检测到人脸..但我的问题是我的人脸图像倒置(从上到下)。这
在 iOS8 设备或 iOS8 模拟器上: 我有一个成为第一响应者的 UITextView。一切正常,直到应用退出事件状态(通过按下主页键)。 应用程序再次激活后,键盘的外观发生了变化 - 参见图片
我是一名优秀的程序员,十分优秀!