Wyobraź sobie, że mam kilka komponentów przeglądarki, które są używane do wyświetlania tekstu i mają kilka trybów, które użytkownik może przełączać (różne ustawienia czcionek do wyświetlania tekstu/binarny/hex). Jakie byłoby najlepsze podejście do zarządzania współdzielonymi obiektami - na przykład czcionkami, okienkiem dialogowym wyszukiwania itp.? Pomyślałem, że klasa statyczna z leniwie zainicjowanymi obiektami byłaby w porządku, ale może to być zły pomysł.Zarządzanie dzielonymi zasobami między klasami?
static class ViewerStatic
{
private static Font monospaceFont;
public static Font MonospaceFont
{
get
{
if (monospaceFont == null)
//TODO read font settings from configuration
monospaceFont = new Font(FontFamily.GenericMonospace, 9, FontStyle.Bold);
return monospaceFont;
}
}
private static Font sansFont;
public static Font SansFont
{
get
{
if (sansFont == null)
//TODO read font settings from configuration
sansFont = new Font(FontFamily.GenericSansSerif, 9, FontStyle.Bold);
return sansFont;
}
}
}
Należy pamiętać, że wszelkie zasoby IDisposable (czcionki, dialogi itp.), Które umieściłeś twoja klasa statyczna zostanie przydzielona na okres ważności twojej aplikacji. To może być to, czego chcesz; tylko FYI. – TrueWill
to jest to, czego chcę, ponieważ chcę, aby zasoby pozostały na zawsze po ich utworzeniu, aby można je było "natychmiastowo" wychowywać po pierwszym leniwym ładowaniu. – Axarydax
Nie chciałbym stracić oka, gdybym przeczytał ten kod w recenzjach (wygląda mi dobrze!). –