2013-09-03 2 views
0

У меня есть класс A, реализующий паттерн одноплодной и содержит object obj:Используйте поле класса, который реализует Singleton шаблон в другом классе

public sealed class A 
{ 
    static A instance=null; 
    static readonly object padlock = new object(); 
    public object obj; 

    A() 
    { 
     AcquireObj(); 
    } 

    public static A Instance 
    { 
     get 
     { 
      if (instance==null) 
      { 
       lock (padlock) 
       { 
        if (instance==null) 
        { 
         instance = new A(); 
        } 
       } 
      } 
      return instance; 
     } 
    } 

    private void AcquireObj() 
    { 
     obj = new object(); 
    } 
} 

Теперь у меня есть еще один класс B, где нужно сохранить экземпляр А. объект obj, пока он не станет живым.

public class B 
{ 
    // once class A was instantiated, class B should have public A.obj 
    // field available to share. 
    // what is the best way/practice of putting obj here? 
} 

спасибо.

+2

Не может ли класс B просто получить доступ к A.Instance.obj? Это инициализирует A, если он не был ранее инициализирован. – Vadim

+0

Класс A не может быть инициализирован классом B. Класс A имеет собственный способ инициализации. – inside

+0

Что вы подразумеваете под «собственным способом инициализации»? Разве это не Синглтон? – Vadim

ответ

2

Просто сделать это следующим образом:

class B 
{ 
    public object obj 
    { 
     get 
     { 
      return A.Instance.obj; 
     } 
    } 
} 

Если это первый раз, когда кто прикасается A.Instance, это будет инициализировать его. При последующих вызовах он будет повторно использовать один и тот же экземпляр A.

+0

выглядит хорошо, Магнус, позвольте мне попробовать, думал об этом, просто решил дважды проверить, есть ли особый способ сделать это. – inside

Смежные вопросы