假设我们有一个只有1个函数的类,例如:compute DFS.以下哪项是首选方法,为什么?
Approach 1:
public class DFS {
public DFS(Graph g) {
dfs(g); // <--- computation invoked from constructor.
}
private void DFS(Graph g) {
// do dfs traversal
}
}
Client:
DFS dfs = new DFS(graph);
Approach 2:
public class DFS {
Graph g;
public DFS(Graph g) {
this.g = g
}
private void doDFS() {
// do dfs traversal
}
}
Client:
DFS dfs = new DFS(graph);
dfs.doDFS();
Run Code Online (Sandbox Code Playgroud) 在软件工程中,设计阶段有两个主要概念abstraction,decomposition但我无法得到它们之间的差异?
虽然研究Observer pattern我注意到,该之间的连接Subject和Observer通常是一对多的.为什么这样?为什么多对多关系可能导致任何问题?
所以,我明白一个类可以有属性和方法。
1)如果一个类有一个方法但没有属性,这可能吗?(这似乎不可能,在我看来它违背了创建类的目的)
2)如果一个类有属性但没有方法,这可能吗?(这似乎是可能的)
非常感谢!
我正在研究面向对象的设计原则和启发式方法.
在这本名为"面向对象设计启发式"的着名书籍中,Arthur J. Riel(1996)看到了这种启发式:
启发式4.13:一个类必须知道它包含什么,但它永远不应该知道谁包含它.基于J.Reil,主要原因是可重用性.
但是在Swing Structure中,我们可以直接访问Parent对象的引用.
例如: label.getParent()
所以我的问题是:
为什么swing组件有.getParent()方法?现有的这种方法有
哪些面向对象的原理或启发式方法?
我一直在阅读有关多租户的文章。像下面这样的非常琐碎的陈述。我已经阅读了数十个链接和网站,但都非常抽象。
..其中单个软件实例在服务器上运行并为多个租户提供服务。
我很容易从 30000 英尺以上理解它,但我无法理解它的实现方式。
如果有人可以通过单个堆栈(只是技术)和一个示例(可能是 Salesforce)帮助我理解我如何实现它,我会更满意,因为我几乎几天就迫不及待地想知道它了。
请不要张贴维基百科或任何网站的链接。我已经阅读了其中的大部分内容,但狩猎仍在继续!
我知道这是一个非常微不足道的问题,但请不要因为很少有充分理由而拒绝投票,因为您可能会从这个问题中读到一些新答案!
在这种情况下,我试图公开空间搜索结构的标准 API,其中构建结构的各种方法的输入数据是相同的,但构建搜索结构的方式不同。我有基类上的数据设置器和派生类需要实现的纯虚拟 Build() 方法来构造搜索结构。下面是我的基类的样子
class SpatialSearch
{
public:
void SetData(Data data_)
{
this->data = data_;
this->dirty = true;
}
virtual void Build() = 0;
int search(Vec3 point)
{
if(dirty)
Build();
// Code to perform a search. I won't get into the
// nitty gritty of this, but this exists as a commom
// implementation on the base class for all the spatial
// search structures.
}
private :
Data data;
bool dirty;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您注意到,每次搜索调用都会检查该dirty标志。如果上次之后数据已更改,我会重建结构。但是,Build 方法是在派生类上实现的,我需要一种方法来强制执行false在执行 Build …
我将在 Azure DevOps 中创建我的 CI/CD 管道,但我在发布版本号方面遇到问题。使用此 CI/CD 创建了 dotnet 应用程序构建和 docker 映像,因此我希望 docker 映像版本号与:V1.2.0 和 ..... 相同,但目前我有编号,例如:10, 11, .. . 或者只有最新的标签!有人可以支持我拥有自己的发布版本号吗?谢谢
我正在为对象存储开发一个 API,并且正在努力寻找一种在 Rust 中实现它的方法。这有点令人沮丧,因为我很清楚如何在 C++ 中做到这一点,所以也许这个设计从根本上不适合 Rust,但我希望这里的人们能够提供一些有用的见解。
我希望能够执行以下操作:
// This is clone & copy
struct Id<Identifiable> {
// What I think would be needed to get this entire system
// to work, but it is not fixed like this so alternate
// ideas are welcome.
raw_id: usize,
_marker: PhantomData<Identifiable>,
}
struct Store {
// ... don't know how to implement this
}
trait Object {
// ... some behavior
}
struct ObjectA {}
impl Object for ObjectA {}
struct ObjectB …Run Code Online (Sandbox Code Playgroud) 我已经研究了MEF(托管可扩展性框架)两天了.但是,我认为MEF不能给我我的期望.
我想要一个软件设计:将有核心应用程序,应用程序的所有模块将作为插件完成.例如,在电子商务应用程序订单模块中,广告系列模块等都应该作为插件添加.
问题是:我可以在Asp.NET webform上使用MEF进行这样的设计吗?
software-design ×10
java ×2
oop ×2
uml ×2
abstraction ×1
architecture ×1
asp.net ×1
azure ×1
azure-devops ×1
c++ ×1
cloud ×1
devops ×1
mef ×1
modeling ×1
multi-tenant ×1
plugins ×1
rust ×1
saas ×1
swing ×1
webforms ×1