我一直在考慮使用generic factory pattern來實現此目的,但是我只是想確保正確使用它。正確的設計模式在運行時更改數據類型實例
首先,由於客戶需要,這必須是基於Java的。
我的應用程序可以實例化幾個對象,並且每個對象都應該能夠在運行時更改類型。例如,一個變量可以以浮點形式出現,可以轉換爲int形式,然後轉換爲char形式,然後轉換回浮動形式。這將是一個基本的例子,但是可以添加自定義數據類型以獲得額外的樂趣。
在這種情況下是否使用正確的工廠模式?或者,有什麼更好的?對我來說,工廠模式似乎更好地實例化和不更新(除非我實質上銷燬並重新實例化變量)。
更多細節:
這是一個漸進的算法,其中我並不知道這個類型在程序啓動時。根據進化的方式,它可能會發現一個整數比一個浮點更可取。
舉例來說,如果我開始的4.34浮點值:
// start of program
object var = 4.34;
// evolution running......
...
// evolution determines that var would be better as a float
var.convertToInt();
// var is now an int with a value of 4
我最初的想法已經有一個通用的工廠類型的對象,我跟蹤對象的當前「類型」的並返回適當的值。所以在開始時它將返回一個float
,並且在轉換之後將返回int轉換值(映射到內部int
)。
編輯2:代碼澄清。
我想我的觀點只是沒有通過。這是我期望看到的代碼明智的例子。
object var = new object(int, 4); // create int variable with value of 4
// where object is whatever base design pattern i am using here
...
var.toFloat(); // convert var to float, value is now 4.0
System.out.println(var.getValue()); // prints 4.0
...
var.toCustomClass(); // var is now a custom datatype
System.out.println(var.getValue()); // calls the print method of the class
我還要提到的var
的實例需要在整個執行持續下去,因爲這是我的進化算法中的一個對象,不能被破壞並重新實例化爲別的東西。
類型的變量'float'不能成爲一個'int'一個ClassCastException將啓動。你的意思是'數字'?編程到接口?控制反轉?依賴注入? –
是的,直接它不能。但是,對於我的應用程序,我需要轉換基本類型並找出一種方法來表示它。 – espais
我仍然不明白你的期望或你正在嘗試做什麼。使所有的引用類型爲'對象'。 –