Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将状态设计模式与依赖注入相结合_Java_Design Patterns_Dependency Injection - Fatal编程技术网

Java 如何将状态设计模式与依赖注入相结合

Java 如何将状态设计模式与依赖注入相结合,java,design-patterns,dependency-injection,Java,Design Patterns,Dependency Injection,我试图理解如何在Java 1.7代码中组合它们(如果可能): class View{ private State _state; } abstract class State{ protected View _view; } class UserState extends State{} class AdminState extends State {} 我试图通过这些文章更好地理解它们:和。但最后我更加困惑 我的问题是: 我可以在视图类中注入状态并避免保留状态实例吗 我在实现它的代码中

我试图理解如何在Java 1.7代码中组合它们(如果可能):

class View{
private State _state;
}

abstract class State{
protected View _view;
}

class UserState extends State{}
class AdminState extends State {}
我试图通过这些文章更好地理解它们:和。但最后我更加困惑

我的问题是:

  • 我可以在视图类中注入状态并避免保留状态实例吗

  • 我在实现它的代码中缺少了什么


提前感谢。

您遇到的问题对于依赖注入初学者来说很常见。您正在尝试执行循环依赖项注入。我想。读了那篇文章,它比我将要做的更好

不过,简单地说:您正在尝试这样做(从文章中窃取的图片):

最好改为:

                         +---------+
+---------+              |    B    |
|    A    |<-------------|         |
|         |              |         |
|         |    +---+     |         |
|         |--->| C |<----|         |
|         |    +---+     +---------+
+---------+
+---------+
+---------+| B|

|A | | C |请编辑它以修复它。换句话说,虽然我知道这两种模式,但我对你试图帮助你做的事情了解得不够。+1表示更正。问题已更新。
public class A {
    private final B b;
    A(B b) {
        this.b = b;
    }
}

public class B {
    private /*not-final*/ A a;
    public void setA(A a) {
        this.a = a;
    }
}
                         +---------+
+---------+              |    B    |
|    A    |<-------------|         |
|         |              |         |
|         |    +---+     |         |
|         |--->| C |<----|         |
|         |    +---+     +---------+
+---------+