- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我刚刚查看了一些以前看起来像这样的代码
public class ProductChecker
{
// some std stuff
public ProductChecker(int AccountNumber)
{
var account = new AccountPersonalDetails(AccountNumber);
//Get some info from account and populate class fields
}
public bool ProductACriteriaPassed()
{
//return some criteria based on stuff in account class
//but now accessible in private fields
}
}
现在已经添加了一些额外的标准,这些标准需要不在 AccountPersonalDetails 类中的数据
新代码看起来像这样
public class ProductChecker
{
// some std stuff
public ProductChecker(int AccountNumber)
{
var account = new AccountPersonalDetails(AccountNumber);
var otherinfo = getOtherInfo(AccountNumber)
//Get some info from account and populate class fields
}
public bool ProductACriteriaPassed()
{
//return some criteria based on stuff in account class
// but now accessible in private fields and other info
}
public otherinfo getOtherInfo(int AccountNumber)
{
//DIRECT CALL TO DB TO GET OTHERINFO
}
}
我对数据库部分感到困扰,但人们能告诉我为什么这是错误的吗?或者是?
最佳答案
在您系统的分层 View 中,它看起来像 ProductChecker
属于业务规则/业务逻辑层,因此它不应该被用户交互功能“污染”(属于上面层)或——这与你的情况密切相关——存储功能(属于下面层) )。
“其他信息”应该封装在它自己的存储层类中,并且该类应该是处理持久化/检索功能的类(就像我想象的那样 AccountPersonalDetails
正在为它自己做东西)。 “个人详细信息”和“其他信息”最好作为单独的类保存还是合并到一个类中,我无法从提供的信息中判断,但应该认真考虑并仔细权衡该选项。
保持层分离的经验法则有时可能会让人觉得僵硬,并且通常很想通过层的混合来简化它以添加功能——但是为了在系统增长时保持系统的可维护性和清洁性,我几乎每当出现这样的设计问题时,总是主张层分离。用 OOP 术语来说,就是“强内聚弱耦合”;但在某种意义上它比 OOP 更基础,因为它也适用于其他编程范例及其混合!-)
关于c# - 对本课的建设性批评,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454915/
我正在为数据结构类(class)做期末练习,我有几个问题希望得到帮助: void BST::traverse(Vertex *V) // post order traversal recursive
我正在 udacity.com 上进行 Android 开发培训,随后进行了 sunny 应用程序的实现。我正在使用 android studio 最新版本进行实现。 我正要到达我应该获得模拟 Lis
~~~更新:已解决!谢谢大家!~~~ 我正在研究 Blue Pelican Java 书中的一个项目,第 16 课项目 Gas Mileage。它要求创建两个类,一个是 Automobile,它包含我
我已经阅读了很多有关依赖注入(inject)、控制反转和 IoC 容器的文章。我还主要使用动态语言编程(工作中使用 PHP,在家使用 Python)。以下是我找到的东西,但是当我将它们拼凑在一起时,这
我有以下类层次结构: interface Repository // This class contains some common stuff for LocalRepository and Rem
我正在观看 Erik Meijer 的 Functional Programming Fundamentals 系列讲座(附有 Graham Hutton 的幻灯片)。 在 lecture 8 (on
一个文本文件包含有关垒球队的信息。每行数据排列如下: 4 Jessie Joybat 5 2 1 1 第一项是玩家的编号,方便地在 0-18 范围内。第二项是玩家的名字,第三项是玩家的姓氏。每个名字都
我正在学习 Codility 计数课 ( https://codility.com/media/train/2-CountingElements.pdf ),我需要帮助来了解最快的解决方案。 我想知道
我是编码新手,即将完成“使用 Swift 进行 App 开发入门”iBook。我目前正在学习第 19 课,枚举和开关,在相关 Playground 的第 8 页,它显示了以下代码: enum Lunc
我真的尝试过研究这个问题,但我现在离它太近了,我担心如果不寻求帮助我就找不到解决方案。我正在学习 RubyMonk,其中一个练习让我完全不知所措。 class Hero def initializ
在观看 Lecture 10 iTunes 视频的同时尝试跟进并编写 Smashtag 项目。 当我将下载的 Twitter 包添加到我的 Smashtag 项目时,当我在 TweetTableVie
public int solution(int[] A) { int lengthOfArray = A.length; int tempArray[] = new int[lengt
所以我收到此错误消息,指出无法解析fragment_ main xml 中的符号它出现在这行代码上 tools:context=".MainActivity$ForecastFragment">其中的
使用 NodeSchool.io 学习 Node.js,我对以下两个代码段之间的差异感到困惑。这种差异可能对于 Node.js 或一般的 JS 来说是根本性的,所以我希望专家能够向我澄清这一点。 第
这是我想为每个行为类似于切片的类型实现的特征(针对问题进行了简化): trait SliceLike { type Item; /// Computes and returns (ow
这节课应该非常简单。他们拼出了答案,但我自己和论坛中的 10 多个人无法让本类(class)发挥作用。 我们是否错误地实现了代码?教训是否具有误导性?答案检查器是否已损坏? http://www.co
我将在 udacity.com 上接受 Android 开发人员培训,然后实现 Sunshine 应用程序。我正在使用 Android Studio,最新版本默认安装。 我正处于我应该拥有一个带有模拟
这个问题已经有答案了: Why is "None" printed after my function's output? (7 个回答) 已关闭 6 年前。 我已经在互联网上搜索并尝试了代码的变体,
我无法在我的 Rails 应用程序中使用 Ajax。 借助 Ajax 的魔力:当我单击“关注”按钮时,它应该更新用户在个人资料页面中看到的关注者数量,而无需刷新页面。但是,在我的示例应用程序中,这并没
我正在关注关于 Redux 的 egghead.io 教程。我在第 17 课上遇到了 Dan Abramov 没有的错误。代码如下。 我得到的错误是 “类型错误:无法读取未定义的属性‘map’ 根据我
我是一名优秀的程序员,十分优秀!