Po przeczytaniu artykułu Programmers Are People Too przez Kena Arnolda, próbowałem wdrożyć ideę progresywnego ujawniania w minimalnym API C++, aby zrozumieć, jak można to zrobić na większą skalę.Progresywne ujawnianie w C++ API
Ujawnianie progresywne odnosi się do idei "dzielenia" API na kategorie, które zostaną ujawnione użytkownikowi interfejsu API tylko na żądanie. Na przykład API można podzielić na dwie kategorie: kategorię podstawową, która jest (domyślnie dostępna dla użytkownika) dla metod, które są często potrzebne i łatwe w użyciu oraz rozszerzonej kategorii dla usług na poziomie eksperckim.
Znalazłem tylko jeden przykład w sieci takiej implementacji: biblioteka db4o (w Javie), ale tak naprawdę nie rozumiem ich strategii. Na przykład, jeśli przyjrzymy się ObjectServer, zostanie on zadeklarowany jako interfejs, podobnie jak jego rozszerzona klasa ExtObjectServer. Następnie implementowana jest implementująca klasa ObjectServerImpl dziedzicząca z obu tych interfejsów i zaimplementowane tam są wszystkie metody z obu interfejsów.
To podobno pozwala kodu, takich jak:
public void test() throws IOException {
final String user = "hohohi";
final String password = "hohoho";
ObjectServer server = clientServerFixture().server();
server.grantAccess(user, password);
ObjectContainer con = openClient(user, password);
Assert.isNotNull(con);
con.close();
server.ext().revokeAccess(user); // How does this limit the scope to
// expert level methods only since it
// inherits from ObjectServer?
// ...
});
Moja znajomość Java nie jest dobre, ale wydaje się, moje niezrozumienie, jak ta praca jest na wyższym poziomie.
Dzięki za pomoc!
Jeśli dobrze rozumiem artykuł, Progressive Disclosure jest techniką dokumentacji, a nie metodologią programowania. Możesz uporządkować dokumentację w oddzielne sekcje dla zwykłych rzeczy i zaawansowanych rzeczy. – Barmar
To prawdopodobnie sprawia, że pytanie jest bardziej odpowiednie dla programistów.SE lub softwareengineering.SE. – Barmar
@Barmar Sposób, w jaki to czytam, to coś więcej niż tylko dokumentacja: delegujesz funkcje "zaawansowane" do osobnego interfejsu. – Angew