Zapouzdření
prvního pilíře objektově orientovaného programování isencapsulation . Myšlenka zapouzdření je, žechcete udržet každý typ nebo třídu diskrétní a soběstačný. To vám umožní změnit implementaci jedné třídy bez ovlivnění jakékoli jiné třídy.
třída, která poskytuje metodu, kterou mohou použít jiné třídy, se nazýváserver
. Třída, která používá tuto metodu, se nazývá client
. Cílem zapouzdření je, že můžete změnit podrobnosti o tom, jak server pracuje bez breakinganything v implementaci klienta.
toho je dosaženo nakreslením jasné a zářící čáry mezipublic interface
třídy a jejíprivate implementation
. Veřejné rozhraní je smlouva vydaná vaší třídou, která říká: slibuji, že budu moci tuto práci udělat. Konkrétně, uvidíte, že publicinterface říká, že volat tuto metodu, s těmito parametry, andI bude dělat tuto práci a vrátí tuto hodnotu. Klient se může spolehnout na to, že se veřejné rozhraní nezmění. V prípade zmeny verejného obstarávania musí klient prekompilovať a prekompilovať.
soukromá implementace je naproti tomu pro server soukromá. Projektant server class je zdarma changehow to dělá práci slíbil, že v publicinterface, tak dlouho, jak to pokračuje plnit podmínky itsimplicit smlouvy: musí mít dané parametry, promisedwork, a vrátit se do zaslíbené hodnotu.
například můžete mít veřejnou metodu, která slibuje následující:Dejte mi dolarovou částku a několik let a vrátím čistou současnou hodnotu. Jak vypočítáte tuto částku, je vaše firma; pokud klient dodá částku dolaru a několik let, musíte vrátit čistou současnou hodnotu. Youmight implementovat, že zpočátku tím, že drží tabulku hodnot. Můžete to později změnit, abyste vypočítali hodnotu pomocí příslušné algebry. To je vaše věc, a nemá vlivklient. Pokud nezměníte veřejné rozhraní (např., dokud nezměníte Počet nebo typ očekávaných parametrů nebo nezměníte typ hodnoty návratu), vaši klienti se při změně implementace nezlomí.