對不起,如果這個標題不是很明確,不知道如何描述我在找什麼,這無助於做適當的研究。通過方法調用子對象輕鬆構建
所以,我目前devlopping一個DLL,稍後將用於更大的項目。
我想此DLL使用一個對象作爲這樣的輸入:在此對象中的每個方法
SQuery _query = new SQuery()
.addText("text")
.addValue("2");
,我可以通過容易地做「這個返回」。
然後我想補充應該像這樣工作的另一個功能:
//Creation of the main object
SQuery _query = new SQuery()
.addText("text")
.addValue("2");
//Creation of the subobject
SSub _sub = new SSub()
.addTest("test")
.addValue(3);
//Adding subobject to main object
_query.AddSub(_sub)
.addTitle("title");
現在我想知道是否有一種方法來代碼,可以允許它更容易使用,我第一次做這樣的:
SQuery _query = new SQuery()
.addText("text")
.addValue(2)
.addSub(new SSub().addTest("test").addValue(3))
.addTitle("title");
現在我想走得更遠,我不知道是哪個語法應該是正確的,我沒有找到任何但是我尋找一些可以使用,而無需用戶實例化的這樣的對象:
SQuery _query = new SQuery()
.addText("text")
.addValue(2)
.addSub()(this.addtest("test").addValue(3)) //or something like that
.addTitle("title");
我知道我可能是錯的,它是不是一個好主意,以有東西容易,因爲可以使用,我也許應該僅僅停留在前面的例子,這是比較容易的代碼,仍然很容易使用。但無論如何,我想要別人的意見,以防有人知道解決方案。對我來說,這是不可能的,唯一的辦法是做到這一點,但它感覺很糟糕是讓我的子對象addTest()& addValue()returing自己的子對象實例,然後在子對象中有一個endSub()方法返回像這樣的主要對象:
SQuery _query = new SQuery()
.addText("text")
.addValue(2)
.addSub()
.addTest("test")
.addValue(3)
.endSub()
.addTitle("title")
但是使用這個,你看不到的地方啓動子對象,並在那裏結束。
我並不是那些成功者調用方法的粉絲,我覺得很容易閱讀代碼,但有些人在以前的版本中使用我的DLL問我,他們可以更快地使用這些巨大的成功者調用,這就是爲什麼我試着做到這一點。
最後,對不起我的英文。
多少嵌套的層次,你想支持?是否有某些呼叫表明他們自己的「結束小組」? – CodeCaster
其實它可以是無限的...你可以有自己的子對象... 這是一個查詢的構造,唯一的方法來知道什麼時候end sub必須出現是當用戶停止添加對它的調用。 只有當開發者認爲他的查詢結束後才能執行它。 –
這裏的慣用解決方案是爲所有這些操作使用屬性,而不是方法。 – Servy