【问题标题】:Java Design pattern code explanationJava设计模式代码解释
【发布时间】:2016-06-29 12:03:30
【问题描述】:

我试图弄清楚这段代码的作用。它基于设计模式。有人可以解释发生了什么,特别是在getNonTrivialStuff 类型为NonTrivialClass 的最后一种方法中

public class E{
    private SomeOtherClass myObject = null;
    private String trivialString;

    public E(){
        trivialString = "Trivial";
    }

    public String getTrivialStuff(){
        return myTriv;
    }

    public NonTrivialClass getNonTrivialStuff(){
        if (myObject == null){
            myObject = SomeOtherClass.getObject();
        }  
            return myObject.getNonTrivialStuff();
    }

}

【问题讨论】:

  • 它基于什么设计模式?
  • 它看起来像是一个围绕单例的包装器/代理的糟糕实现。基本上,代码使用惰性评估在您的类中设置一个字段。所以,它真的没有什么特别之处。关键是最初字段myObject 为空;当第一次调用 getNonTrivialStuff 时,该字段被初始化,然后用于返回 NonTrivialClass 的实例。那么究竟是什么让你不明白呢?
  • 让我困惑的是“someOtherClass”。不应该是 NonTrivialClass 吗?

标签: java design-patterns


【解决方案1】:

它类似于Proxy_pattern

如果你的类E实现了一个接口,该接口已经被RealSubject实现了,如下图,E可以命名为代理

代理是一个包装器或代理对象,被客户端调用以访问幕后的真实服务对象

UML 图:

proxy,在其最一般的形式中,是一个类,用作其他事物的接口。

代理可以连接到任何东西:网络连接、内存中的大对象、文件或其他昂贵或无法复制的资源。

您可以在下面的帖子中找到有关代理的更多详细信息:

What is the exact difference between Adapter and Proxy patterns?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2013-12-20
    • 2011-06-07
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    相关资源
    最近更新 更多