2016-04-06 20 views
0

için statik bir java nesnesi kullanımı Belirli bir tasarıma nasıl yaklaşılacağı hakkında bir sorum var. Bir uygulamada bir sohbet istemcisi oluşturuyorum ve uygulamamın birkaç GUI, Giriş için bir tane ekranı, kayıt ekranı için 2.'si, sohbet GUI'sinin üçüncüsü var. Giriş ekranı başladığında, ConnectionHandler'ın başlaması gereken bir iş parçacığına sahip olmak istiyorum, temel olarak bir statik, bir kapalı nesne olacak bir MessageQue nesnesine sarmak istediğim bir SynchronizedQue tabanlı tüm komutları sunucuya gönderir . Fikir, bu iş parçasının uygulamanın ömrü boyunca çalışmasını sağlamaktır. Temel olarak oturum açma ekranı, Senkronize Edici'ye bir mesaj gönderir ve daha sonra ConnectionHandler güncellendiğini okur, mesajı bir sokete götürür ve gönderir.Bir Yazılım Bileşeni

Bu duruma doğru nesne yönelimli bir yaklaşım mı? Statik nesnelerin, değişkenlerin vb doğru nesne yönelimli bir yaklaşım olmadığını okudum. Temel olarak, soru, bellekte ve diğer sınıflar ile iletişim halinde olan tek bir bileşenin uygulanması için bir tasarım felsefesi ile ilgilidir.

DÜZENLEME: sadece bu yazma anda aklımda beliren başka bir fikir, bir MessegeQueHandler sınıfına statik nesne MessageQue koymak, bu yüzden MessegeQueHandler sınıf iradesiyle oluşturulabilir ancak messege que içinde var olacaktır Biraz daha fazla nesne odaklı olabilir arka plan.

Yardım için teşekkürler.

+0

Tasarımınızı gerçekten anlamıyorum, ancak "statik" değişkenler ve "statik" yöntemler (kurucular dahil!) Kodunuzu test etme seçeneklerinizi sınırlar (özellikle _unit testing_ için) ve bunlar sizin için fazladan iş yaparlar. Kodunuzu yeniden kullanmak veya sisteminizin mimarisini değiştirmek isterseniz. Tüm bunlar, ilk etapta bir "statik olmayan" tasarım yaratmanız için daha fazla ön çalışma olabileceği gerçeğine karşı dengelenmelidir. –

+0

@james Peki benim tasarım temelde 3 GUIS: Kayıt ekranı ya da iki metin kutuları ile sohbet uygulaması ekran yol açar Giriş ekranı. Ben bağlantı etrafında geçmek istemiyorum ama bir SynchronizedQue koleksiyonu okuyacaktır aplikasyon başlangıcında başlatmak için bir iş parçacığı var, ben herhangi bir oluşturmadan, her GUI gelen sunucuya messeges ekleyebilirsiniz böylece SynchronizedQue statik yapmak istiyorum Nesneler her zaman yeni bir liste oluşturmak zorunda kalacaktı. Bu soruna daha iyi bir yaklaşım olabilir mi? –

cevap

1

Tanımladığınız şey, Singleton Pattern'dur ve hem OO tasarımında hem de diğer paradigmalarda kullanılan çok yaygın bir modeldir. Yani evet, OO tasarımında kullanmak için Tamam.