2011-07-29 44 views
1

是否有一個API的風格的名稱讀取像一個句子?例如,在谷歌,吉斯EasyMock/Guice風格的API

bind(TransactionLog.class).to(DatabaseTransactionLog.class); 

或EasyMock的

expect(mock.voteForRemoval("Document")).andReturn((byte) 42); 

我希望能編寫類似於我稱之爲「谷歌式」的API,即我想要一個API它看起來像:

RowStyle(RED_BACKGROUND).when(PROP_ERROR_MESSAGE).notNull(); 

,並想知道優點/缺點這種類型的API,如果它有一個名字,你將如何去implementi它。

+1

查看http://stackoverflow.com/questions/1622662/creating-api-that-is-fluent – ddso

回答

2

這些API被稱爲「流利的API」,在我們的日子裏有些人稱他們爲「內部DSL」,但第一個術語是AFAICT更廣泛使用(並且是更老的正確術語)。

1

對我來說,只有當這些操作(style(),when(),notNull())的序列被嚴格定義時,這纔會起作用。如果你可以在notNull()之後調用when(),這將不會有任何意義。

通常情況下,你只定義一個方法用幾個參數:

public void rowStyle(String condition, boolean notNull) 

,但這些額外的調用是指定可選參數的好方法。所以,+如果你有可選的參數, - 如果你沒有它們; +如果嚴格定義了呼叫順序, - 如果沒有。