gpt4 book ai didi

model-view-controller - "passive"对象是否被视为良好的设计实践?

转载 作者:行者123 更新时间:2023-12-01 12:00:51 25 4
gpt4 key购买 nike

我发现自己经常创建一个没有公共(public)方法且自包含的对象。它通常处理在其私有(private)方法中传递给其构造函数的参数事件,并且不会引发任何事件或公开任何公共(public)方法。

我称这种类型的对象为“被动”对象——没有定义任何公共(public)方法的对象。所有交互都发生在它们内部的私有(private)方法和构造函数中传递的参数事件中。

通常它是一些实用程序类,例如确保将两种形式粘在一起的类:

public class StickyForm : IDisposable
{
private readonly Form form;
private readonly Form parentForm;

public StickyForm(Form form, Form parentForm)
{
this.form = form;
this.form.StartPosition = FormStartPosition.Manual;
this.parentForm = parentForm;

this.parentForm.LocationChanged += new EventHandler(parent_LocationChanged);
this.parentForm.SizeChanged += new EventHandler(parent_SizeChanged);

SetLocation();
}

void parent_SizeChanged(object sender, EventArgs e)
{
SetLocation();
}

void parent_LocationChanged(object sender, EventArgs e)
{
SetLocation();
}

private void SetLocation()
{
//compute location of form based on parent form
}

public void Dispose()
{
this.parentForm.SizeChanged -= parent_SizeChanged;
this.parentForm.LocationChanged -= parent_LocationChanged;
}
}

但有时它也是某种 Controller ,提供两个 View 之间的交互:

public class BrowseController
{
private IBrowserView view;
private IFolderBrowser folderBrowser;

public BrowseController(IFolderBrowser folderBrowser, IBrowserView view)
{
this.view = view;
this.folderBrowser = folderBrowser;

this.folderBrowser.NodeOpened += folderBrowser_NodeOpened;
}

private void folderBrowser_NodeOpened(object sender, Core.Util.TEventArgs<IPictureList> e)
{
this.Browse(e.Value);
}

public void Browse(IPictureList content)
{
//stripped some code
AddItemsToView(content);
}

private void AddItemsToView(IPictureList browser)
{
//call methods on view
}
}

这样的“被动”对象是否被认为是一种好的设计实践?

这种类有更好的名字吗?

最佳答案

在我看来是个不错的设计。我不确定被动这个名字。这些类(class)看起来确实很活跃。他们对事件使用react并做事。我认为如果您必须调用类的方法来让它做某事,那么它会更加被动,但通常它不会做任何事情,除非被戳一下。

“ Controller ”这个名字怎么样? “ Controller ”是 UI 中使用的类的更常用名称,它会引起 View 和数据之间的交互,并且它们通常不需要公共(public)方法。

我敢肯定还有其他关于名称的想法。

关于model-view-controller - "passive"对象是否被视为良好的设计实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com