Hello Stackoverflowers,
我有5个班,Foo,Bar,Thud,Grunt,Zot。 Thud和Grunt实例是Bar的字段。 Foo实例是Thud的一个领域。
Foo,Thud和Grunt为View准备数据(MVVM模式,它们是视图模型)。 Foo和Zot是数据或创建它们(模型)
除此之外,Foo还生产了一些在Grunt中列出的Zot(从Bar中添加,从Thud访问Foo)。我需要Foo来获取Grunt中的Zot列表。如果可能的话,我想避免在Grunt或Bar类中完成所有工作(将序列化列表),因为它们不是模型。这个过程总是从Foo开始(当然可以添加新的类或东西)
public class Bar
{
Thud thud;
Grunt grunt;
Bar(Zot zotInstance)
{
new thud();
new grunt();
grunt.zotlist.add(zotInstance);
}
}
public class Thud
{
Foo foo;
}
public class Grunt
{
list<Zot> zotList;
public list<Zot> getList();
}
public class Foo
{
public Zot makeZots() {};
public void BringMeZots() // I would like a way to get the zotList when this method is called.
}
我不确定以最简单的方式解释它。告诉我是否需要另外解释我的问题。
答案 0 :(得分:0)
因此,您需要一种方法来分享您正在创建的Grunt
对象。
首先,您需要一种方法将其注入Foo
类:
public class Foo
{
Grunt grunt;
public Foo(Grunt g)
{
grunt = g;
}
public Zot makeZots()
{
}
public void BringMeZots()
{
List<Zot> hereAreSomeZots = grunt.getList();
}
}
这意味着您还需要将其注入Thud
课程:
public class Thud
{
Foo foo;
public Thud(Grunt g)
{
foo = new Foo(g);
}
}
最后,您可以将此Grunt
实例传递到Thud
实例中:
public class Bar
{
Thud thud;
Grunt grunt;
Bar(Zot zotInstance)
{
grunt = new Grunt();
grunt.zotlist.add(zotInstance);
thud = new Thud(grunt);
}
}
你有相当抽象的类名,所以我很难分辨出每个人的实际行动,但正常情况下,当我看到需要传递依赖关系的时候,这表明整体设计存在问题。 / p>
你应该看一下依赖注入,因为这也会简化你的设计。