![](/img/trans.png)
[英]Is using Object class to represent all kind of Json payload a good idea
[英]Is it a good idea to create a class for object identified by names?
我有一個可以通過名稱標識的服務列表。 每個服務都有一組參數(IP地址,端口,可用性等)。 還有一些方法可以應用於服務(關閉連接,打開連接,向服務器發送消息,檢查其是否響應等)。
因此,我認為創建Server類並將真實的服務器表示為此類的對象是一種自然的方法。
但比我意識到這並不是很方便。 例如,我有一個服務器名稱(只是一個字符串),我想對該服務器做些事情。 然后,我需要一個將服務器名稱映射到代表該服務器的對象的映射? 這似乎不是一個優雅的解決方案。
我決定要創建一個包含一組靜態方法的類。 然后,例如以以下方式使用它: ServerClass.sendMessage("NameOfServer","MyMessage")
或例如ServerClass.close("NameOfServer")
或ServerClass.getIP("NameOfServer")
。
這是一個好的解決方案嗎?
具有各種實例的類的一個優點是它提供了一種類型安全性。 如果你有
Server myServer = ServerRepository.getServer("NameOfServer");
if (myServer != null) myServer.sendMessage("MyMessage");
那么您就可以在發送消息之前知道服務器名稱中是否有錯字(因為存儲庫無法返回匹配的消息)。
是您的所有服務器都公開相同的服務,還是有一些依賴於服務器? 例如,如果您同時擁有具有doFoo()方法的FooServer和具有doBar()方法的BarServers,但Foo沒有doBar且Bar沒有doFoo,那么這可能是一個壞主意,因為ServerClass可能會公開對潛在的來電者毫無意義。 但是,如果您知道所有服務器都將是FooServer,那么這可能是一種有效的方法,因為您可以集中通用代碼。 我要說的是要小心,您的代碼保持可維護性,並且不會在需要自定義代碼的情況下強制執行常見的行為,否則最終會添加大量額外的參數來指示“特殊情況”,在這種情況下,您的行為需要針對一個原因或另一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.