{"id":5937,"date":"2021-05-11T16:08:10","date_gmt":"2021-05-11T11:38:10","guid":{"rendered":"https:\/\/walvira.ir\/blog\/?p=5937"},"modified":"2022-02-06T19:35:51","modified_gmt":"2022-02-06T16:05:51","slug":"%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-%d8%a7%d8%b5%d9%84-%d8%af%d9%88%d9%85-%d8%a7%d8%b2-%d8%a7%d8%b5%d9%88%d9%84-solid","status":"publish","type":"post","link":"https:\/\/walvira.com\/blog\/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-%d8%a7%d8%b5%d9%84-%d8%af%d9%88%d9%85-%d8%a7%d8%b2-%d8%a7%d8%b5%d9%88%d9%84-solid\/","title":{"rendered":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u0635\u0644 \u062f\u0648\u0645 \u0627\u0632 \u0627\u0635\u0648\u0644 SOLID"},"content":{"rendered":"<h3>SOLID \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627\u06cc \u0627\u0635\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0634\u06cc \u06af\u0631\u0627 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u0644\u0645\u0647 \u0645\u062e\u0641\u0641 5 \u0627\u0635\u0644 \u0637\u0631\u0627\u062d\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/h3>\n<ul>\n<li><a href=\"https:\/\/walvira.ir\/blog\/2021\/04\/19\/%d8%a7%d8%b5%d9%84-single-responsibility-principle-%d8%af%d8%b1-%d8%a7%d8%b5%d9%88%d9%84-solid\/\">Single Responsibility Principle<\/a><\/li>\n<li><strong>O<\/strong>pen\/Closed Principle<\/li>\n<li><strong>L<\/strong>iskov Substitution Principle<\/li>\n<li><strong>I<\/strong>nterface Segregation Principle<\/li>\n<li><strong>D<\/strong>ependency Inversion Principle<\/li>\n<\/ul>\n<h3>\u0627\u0628\u062f\u0627\u0639 \u06a9\u0646\u0646\u062f\u0647 \u06cc \u0627\u0635\u0648\u0644 SOLID \u06a9\u06cc\u0633\u062a\u061f<\/h3>\n<p>\u067e\u0646\u062c \u0627\u0635\u0644 SOLID \u062a\u0648\u0633\u0637 Robert C.Martin \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0645\u0637\u0631\u062d \u0634\u062f.<\/p>\n<h3>\u0647\u062f\u0641 \u0627\u0635\u0648\u0644 SOLID \u0686\u06cc\u0633\u062a\u061f<\/h3>\n<p>\u0647\u062f\u0641 \u0627\u06cc\u0646 \u0627\u0635\u0648\u0644 \u062a\u0648\u0633\u0639\u0647 \u06a9\u062f\u06cc \u0628\u0627 \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u0648 \u0642\u0627\u0628\u0644 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u062a\u0648\u0633\u0639\u0647 \u067e\u0630\u06cc\u0631 \u0647\u0645\u0686\u06cc\u0646 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0628\u06cc\u0646 \u062a\u0645\u0627\u0645\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0627 \u0627\u0633\u062a.<\/p>\n<p>\u0647\u0645\u0647 \u0622\u0646\u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f \u0648 \u0627\u0631\u0632\u0634 \u0634\u0646\u0627\u062e\u062a\u0646 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f. \u0627\u0645\u0627 \u062f\u0631 \u062f\u0648\u0645\u06cc\u0646 \u067e\u0633\u062a \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u0635\u0648\u0644 SOLID \u060c \u0645\u0646 \u0631\u0648\u06cc \u062f\u0648\u0645\u06cc\u0646 \u0645\u0648\u0631\u062f \u062a\u0645\u0631\u06a9\u0632 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f: \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 (Open\/Closed Principle).<\/p>\n<h3>\u062a\u0639\u0631\u06cc\u0641 \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 (Open\/Closed Principle)<\/h3>\n<p>\u0631\u0627\u0628\u0631\u062a \u0633\u06cc. \u0645\u0627\u0631\u062a\u06cc\u0646 \u0627\u06cc\u0646 \u0627\u0635\u0644 \u0631\u0627 &#8220;\u0645\u0647\u0645\u062a\u0631\u06cc\u0646 \u0627\u0635\u0644 \u0637\u0631\u0627\u062d\u06cc \u0634\u06cc \u06af\u0631\u0627&#8221; \u062f\u0627\u0646\u0633\u062a. \u0627\u0645\u0627 \u0627\u0648 \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0633\u06cc \u0646\u0628\u0648\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f. \u0628\u0631\u062a\u0631\u0627\u0646\u062f \u0645\u0627\u06cc\u0631 \u062f\u0631 \u0633\u0627\u0644 1988 \u062f\u0631 \u0643\u062a\u0627\u0628 \u0633\u0627\u062e\u062a \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0634\u06cc \u06af\u0631\u0627 \u062f\u0631\u0628\u0627\u0631\u0647 \u06cc \u0622\u0646 \u0646\u0648\u0634\u062a. \u0648\u06cc \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 \u0631\u0627 \u0686\u0646\u06cc\u0646 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f:<br \/>\n\u0646\u0647\u0627\u062f\u0647\u0627\u06cc \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u06cc (\u06a9\u0644\u0627\u0633 \u0647\u0627 \u060c \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u060c \u062a\u0648\u0627\u0628\u0639 \u0648 \u063a\u06cc\u0631\u0647) \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u067e\u0633\u0648\u0646\u062f \u0628\u0627\u0632 \u0628\u0627\u0634\u0646\u062f \u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0633\u062a\u0647 \u0647\u0633\u062a\u0646\u062f. &#8221;<\/p>\n<p>\u0627\u06cc\u062f\u0647 \u06a9\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0635\u0644 \u0639\u0627\u0644\u06cc \u0627\u0633\u062a. \u0628\u0647 \u0634\u0645\u0627 \u0645\u06cc \u06af\u0648\u06cc\u062f \u06a9\u0647 \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u060c \u0642\u0627\u0628\u0644\u06cc\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0627\u0632 \u0634\u0631\u0627\u06cc\u0637\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u0644\u0627\u0633\u0647\u0627\u06cc \u0634\u0645\u0627 \u0646\u06cc\u0632 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0627\u0632 \u0647\u0645\u0647 \u06a9\u0644\u0627\u0633\u0647\u0627\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u060c \u0628\u0631\u062a\u0631\u0627\u0646\u062f \u0645\u0627\u06cc\u0631 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0647\u062f\u0641 \u0627\u0632 \u0627\u0631\u062b \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>&#8220;\u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0628\u0633\u062a\u0647 \u0627\u0633\u062a \u060c \u0632\u06cc\u0631\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u06a9\u0644\u0627\u0633\u0647\u0627 \u06af\u0631\u062f\u0622\u0648\u0631\u06cc \u0634\u0648\u062f \u060c \u062f\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u062f \u060c \u062f\u0631 \u062e\u0637 \u0645\u0628\u0646\u0627 \u0642\u0631\u0627\u0631 \u06af\u06cc\u0631\u062f \u0648 \u062a\u0648\u0633\u0637 \u06a9\u0644\u0627\u0633\u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f. \u0627\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627\u0632 \u0627\u0633\u062a \u060c \u0632\u06cc\u0631\u0627 \u0647\u0631 \u06a9\u0644\u0627\u0633 \u062c\u062f\u06cc\u062f\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u062f\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f \u0648 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0641\u0631\u0632\u0646\u062f \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f \u060c \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0635\u0644 \u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u0632\u0627\u062d\u0645\u062a \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u0647\u0627\u06cc \u0622\u0646 \u0646\u06cc\u0633\u062a. &#8221;<\/p>\n<p>\u0627\u0645\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0633\u0627\u0644\u0647\u0627 \u0622\u0645\u0648\u062e\u062a\u0647 \u0627\u06cc\u0645 \u0648 \u0633\u0627\u06cc\u0631 \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u06a9\u0627\u0645\u0644 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0647 \u0627\u0646\u062f \u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0631\u0627\u0628\u0631\u062a \u0633\u06cc. \u0645\u0627\u0631\u062a\u06cc\u0646 \u062f\u0631 \u0645\u0642\u0627\u0644\u0627\u062a \u062e\u0648\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0635\u0648\u0644 SOLID \u06cc\u0627 \u062c\u0648\u0634\u0648\u0627 \u0628\u0644\u0648\u06a9 \u062f\u0631 \u06a9\u062a\u0627\u0628 \u062e\u0648\u062f \u0628\u0627 \u0639\u0646\u0648\u0627\u0646 \u062c\u0627\u0648\u0627 \u0645\u0648\u062b\u0631 \u060c\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0628\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0644\u0627\u0633 \u0627\u0635\u0644\u06cc \u0622\u0646\u0647\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u060c \u0627\u0631\u062b \u0628\u0631\u06cc \u0627\u062a\u0635\u0627\u0644 \u062c\u0641\u062a \u0648 \u0633\u062e\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0631\u0627\u0628\u0631\u062a \u0633\u06cc. \u0645\u0627\u0631\u062a\u06cc\u0646 \u0648 \u062f\u06cc\u06af\u0631\u0627\u0646 \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 \u0631\u0627 \u0628\u0647 \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 \u0686\u0646\u062f \u0634\u06a9\u0644\u06cc \u0628\u0627\u0632\u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0631\u0627\u0628\u0637 \u0647\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0627\u0628\u0631 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u06a9\u0646\u062f \u06a9\u0647 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f\u06cc \u06a9\u0647 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0622\u0646\u0647\u0627 \u0634\u0648\u06cc\u062f. \u0631\u0627\u0628\u0637 \u0647\u0627 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0628\u0633\u062a\u0647 \u0647\u0633\u062a\u0646\u062f \u0648 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0639\u0645\u0644\u06a9\u0631\u062f \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u062e\u0648\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f.<br \/>\n\u0645\u0632\u06cc\u062a \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0633\u0637\u062d \u0627\u0636\u0627\u0641\u06cc \u0627\u0632 \u0645\u0641\u0647\u0648\u0645 \u0648 \u062e\u0644\u0627\u0635\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0627\u062a\u0635\u0627\u0644 \u0634\u0644 \u0631\u0627 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0647\u0633\u062a\u0646\u062f \u0648 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u062f\u06cc \u0646\u062f\u0627\u0631\u0646\u062f.<\/p>\n<h3>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0645\u062b\u0627\u0644\u06cc \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 (Open\/Closed Principle) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/h3>\n<p>\u062f\u0645 \u06a9\u0631\u062f\u0646 \u0642\u0647\u0648\u0647 \u0628\u0627 \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 (Open\/Closed Principle)<br \/>\n\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u06cc \u0627\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0642\u0647\u0648\u0647 \u0631\u0627 \u062e\u0631\u06cc\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0639\u0636\u06cc \u0627\u0632 \u0622\u0646\u0647\u0627 \u0642\u0647\u0648\u0647 \u0631\u0627 \u0627\u0632 \u0641\u06cc\u0644\u062a\u0631 \u0631\u062f \u0645\u06cc\u06a9\u0646\u0646\u062f \u0648 \u0628\u0631\u062e\u06cc \u0622\u0646 \u0631\u0627 \u0622\u0633\u06cc\u0627\u0628 \u0645\u06cc \u06a9\u0646\u0646\u0646\u062f. \u0647\u0645\u0647 \u0622\u0646\u0647\u0627 \u0628\u0647 \u06cc\u06a9 \u0645\u0646\u0638\u0648\u0631 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f: \u0622\u0646\u0647\u0627 \u0642\u0647\u0648\u0647 \u062e\u0648\u0634\u0645\u0632\u0647 \u0627\u06cc \u062f\u0645 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0635\u0628\u062d \u0645\u0627 \u0631\u0627 \u0628\u06cc\u062f\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062a\u0646\u0647\u0627 \u0645\u0634\u06a9\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0648\u0634\u0646 \u06a9\u0631\u062f\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0642\u0647\u0648\u0647 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0631\u062e\u062a\u062e\u0648\u0627\u0628 \u0628\u0644\u0646\u062f \u0634\u0648\u06cc\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0686\u0631\u0627 \u0647\u0645\u0647 \u0686\u0627\u0644\u0634 \u0647\u0627\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u060c \u0645\u0627\u0646\u0646\u062f \u0686\u06af\u0648\u0646\u06af\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0622\u0628 \u0648 \u0642\u0647\u0648\u0647 \u0622\u0633\u06cc\u0627\u0628 \u0634\u062f\u0647 \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u06cc\u0627 \u0686\u06af\u0648\u0646\u06af\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0644\u06cc\u0648\u0627\u0646 \u0632\u06cc\u0631 \u0622\u0646 \u0628\u062f\u0648\u0646 \u0628\u0644\u0646\u062f \u0634\u062f\u0646 \u0627\u0632 \u0631\u062e\u062a\u062e\u0648\u0627\u0628 \u060c \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0646\u06af\u06cc\u0631\u06cc\u062f \u0648 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062f\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062f\u0645 \u06a9\u0631\u062f\u0646 \u0642\u0647\u0648\u0647 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u061f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 \u060c \u0645\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u062f\u0647 \u0646\u0648\u0634\u062a\u0645 \u06a9\u0647 \u06cc\u06a9 \u0642\u0647\u0648\u0647 \u0633\u0627\u0632 \u0627\u0633\u0627\u0633\u06cc \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0635\u0628\u062d \u06cc\u06a9 \u0642\u0647\u0648\u0647 \u062e\u0648\u0634\u0645\u0632\u0647 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u062f\u0645 \u06a9\u0646\u062f.<br \/>\n\u06a9\u0644\u0627\u0633 BasicCoffeeMachine<br \/>\n\u0627\u062c\u0631\u0627\u06cc \u06a9\u0644\u0627\u0633 BasicCoffeeMachine \u0646\u0633\u0628\u062a\u0627\u064b \u0633\u0627\u062f\u0647 \u0627\u0633\u062a.\u0641\u0642\u0637 \u06cc\u06a9 \u0631\u0648\u0634 \u0639\u0645\u0648\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u0642\u0647\u0648\u0647 \u0622\u0633\u06cc\u0627\u0628 \u0634\u062f\u0647 \u0648 \u06cc\u06a9 \u0631\u0648\u0634 \u062a\u0648\u0644\u06cc\u062f \u0642\u0647\u0648\u0647 \u0641\u06cc\u0644\u062a\u0631 \u062f\u0627\u0631\u062f.<\/p>\n<p class=\"prettyprint prettyprinted\"><span class=\"kwd\">import<\/span><span class=\"pln\"> java<\/span><span class=\"pun\">.<\/span><span class=\"pln\">util<\/span><span class=\"pun\">.<\/span><span class=\"typ\">HashMap<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">import<\/span><span class=\"pln\"> java<\/span><span class=\"pun\">.<\/span><span class=\"pln\">util<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Map<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">public<\/span> <span class=\"kwd\">class<\/span> <span class=\"typ\">BasicCoffeeMachine<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pun\">&gt;<\/span><span class=\"pln\"> configMap<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pun\">&gt;;<\/span><span class=\"pln\"> groundCoffee<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">BrewingUnit<\/span><span class=\"pln\"> brewingUnit<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">BasicCoffeeMachine<\/span><span class=\"pun\">(<\/span><span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pun\">&gt;<\/span><span class=\"pln\"> coffee<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">groundCoffee <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> coffee<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brewingUnit <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">BrewingUnit<\/span><span class=\"pun\">();<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">configMap <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">HashMap<\/span><span class=\"pun\">&lt;&gt;();<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">configMap<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pun\">(<\/span><span class=\"lit\">30<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">480<\/span><span class=\"pun\">));<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> brewCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pln\"> selection<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pln\"> config <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> configMap<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ get the coffee<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pln\"> groundCoffee <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">groundCoffee<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ brew a filter coffee<\/span> <span class=\"kwd\">return<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brewingUnit<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brew<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> groundCoffee<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> config<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantityWater<\/span><span class=\"pun\">());<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">public<\/span> <span class=\"kwd\">void<\/span><span class=\"pln\"> addGroundCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pln\"> sel<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pln\"> newCoffee<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">throws<\/span> <span class=\"typ\">CoffeeException<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pln\"> existingCoffee <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">groundCoffee<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"pln\">sel<\/span><span class=\"pun\">);<\/span> <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">existingCoffee <\/span><span class=\"pun\">!=<\/span> <span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">existingCoffee<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getName<\/span><span class=\"pun\">().<\/span><span class=\"pln\">equals<\/span><span class=\"pun\">(<\/span><span class=\"pln\">newCoffee<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getName<\/span><span class=\"pun\">()))<\/span> <span class=\"pun\">{<\/span><span class=\"pln\"> existingCoffee<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setQuantity<\/span><span class=\"pun\">(<\/span><span class=\"pln\">existingCoffee<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantity<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> newCoffee<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantity<\/span><span class=\"pun\">());<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">else<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">throw<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">CoffeeException<\/span><span class=\"pun\">(<\/span><span class=\"str\">&#8220;Only one kind of coffee supported for each CoffeeSelection.&#8221;<\/span><span class=\"pun\">);<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">else<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">groundCoffee<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"pln\">sel<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> newCoffee<\/span><span class=\"pun\">);<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span><\/p>\n<p>\u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0686\u0646\u06cc\u0646 \u062f\u0633\u062a\u06af\u0627\u0647 \u0633\u0627\u062f\u0647 \u0642\u0647\u0648\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f \u060c \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u061f \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645<\/p>\n<h3>\u06a9\u0644\u0627\u0633 BasicCoffeeApp<\/h3>\n<p>\u0631\u0648\u0634 \u0627\u0635\u0644\u06cc BasicCoffeeApp \u06cc\u06a9 \u0646\u0642\u0634\u0647 \u0628\u0627 \u0642\u0647\u0648\u0647 \u0622\u0633\u06cc\u0627\u0628 \u0634\u062f\u0647 \u062a\u0647\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u062f \u060c \u06cc\u06a9 \u0634\u06cc BasicCoffeeMachine \u0631\u0627 \u0646\u0645\u0648\u0646\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u062a\u0647\u06cc\u0647 \u0642\u0647\u0648\u0647 \u0631\u0648\u0634 \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0642\u0647\u0648\u0647 \u0631\u0627 \u0641\u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0646\u062f.<\/p>\n<p class=\"prettyprint prettyprinted\"><span class=\"kwd\">public<\/span> <span class=\"kwd\">class<\/span> <span class=\"typ\">BasicCoffeeApp<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">BasicCoffeeMachine<\/span><span class=\"pln\"> coffeeMachine<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">BasicCoffeeApp<\/span><span class=\"pun\">(<\/span><span class=\"typ\">BasicCoffeeMachine<\/span><span class=\"pln\"> coffeeMachine<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">coffeeMachine <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> coffeeMachine<\/span><span class=\"pun\">;<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> prepareCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pln\"> selection<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">throws<\/span> <span class=\"typ\">CoffeeException<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> coffee <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">coffeeMachine<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brewCoffee<\/span><span class=\"pun\">(<\/span><span class=\"pln\">selection<\/span><span class=\"pun\">);<\/span> <span class=\"typ\">System<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">out<\/span><span class=\"pun\">.<\/span><span class=\"pln\">println<\/span><span class=\"pun\">(<\/span><span class=\"str\">&#8220;Coffee is ready!&#8221;<\/span><span class=\"pun\">);<\/span> <span class=\"kwd\">return<\/span><span class=\"pln\"> coffee<\/span><span class=\"pun\">;<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">public<\/span> <span class=\"kwd\">static<\/span> <span class=\"kwd\">void<\/span><span class=\"pln\"> main<\/span><span class=\"pun\">(<\/span><span class=\"typ\">String<\/span><span class=\"pun\">[]<\/span><span class=\"pln\"> args<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"com\">\/\/ create a Map of available coffee beans<\/span> <span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pun\">&gt;<\/span><span class=\"pln\"> beans <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">HashMap<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pun\">&gt;();<\/span><span class=\"pln\"> beans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pun\">(<\/span> <span class=\"str\">&#8220;My favorite filter coffee bean&#8221;<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">1000<\/span><span class=\"pun\">));<\/span> <span class=\"com\">\/\/ get a new CoffeeMachine object<\/span> <span class=\"typ\">BasicCoffeeMachine<\/span><span class=\"pln\"> machine <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">BasicCoffeeMachine<\/span><span class=\"pun\">(<\/span><span class=\"pln\">beans<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ Instantiate CoffeeApp<\/span> <span class=\"typ\">BasicCoffeeApp<\/span><span class=\"pln\"> app <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">BasicCoffeeApp<\/span><span class=\"pun\">(<\/span><span class=\"pln\">machine<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ brew a fresh coffee<\/span> <span class=\"kwd\">try<\/span> <span class=\"pun\">{<\/span><span class=\"pln\"> app<\/span><span class=\"pun\">.<\/span><span class=\"pln\">prepareCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">);<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">catch<\/span> <span class=\"pun\">(<\/span><span class=\"typ\">CoffeeException<\/span><span class=\"pln\"> e<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span><span class=\"pln\"> e<\/span><span class=\"pun\">.<\/span><span class=\"pln\">printStackTrace<\/span><span class=\"pun\">();<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span> <span class=\"com\">\/\/ end main<\/span> <span class=\"pun\">}<\/span> <span class=\"com\">\/\/ end CoffeeApp<\/span><\/p>\n<p>\u062e\u0648\u062f\u0634\u0647!<\/p>\n<p>\u0627\u0632 \u0627\u06cc\u0646 \u0628\u0647 \u0628\u0639\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0631\u062e\u062a\u062e\u0648\u0627\u0628 \u0628\u0645\u0627\u0646\u06cc\u062f \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0647\u0648\u0647 \u062a\u0627\u0632\u0647 \u062a\u0647\u06cc\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 BasicCoffeeApp \u062e\u0648\u062f \u0631\u0627 \u062d\u0633 \u06a9\u0646\u06cc\u062f.<\/p>\n<h3>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 (Open\/Closed Principle)<\/h3>\n<p>\u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0627\u06af\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u062f\u0648 \u0646\u0648\u0639 \u062f\u0633\u062a\u06af\u0627\u0647 \u0642\u0647\u0648\u0647 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u062f. \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0647 \u0686\u0646\u062f \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0648 \u0686\u0648\u0646 \u0642\u0628\u0644\u0627\u064b \u0631\u0648\u06cc \u0622\u0646 \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u060c \u0686\u0631\u0627 \u0622\u0646 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u062f\u0647\u06cc\u062f \u062a\u0627 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0622\u0646 \u0628\u0627 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0642\u0647\u0648\u0647 \u0633\u0627\u0632 \u0622\u06cc\u0646\u062f\u0647 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<h3>\u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0631\u0627\u0628\u0637 CoffeeMachine<\/h3>\n<p>\u0637\u0628\u0642 \u0627\u0635\u0644 Open \/ Closed \u060c \u0628\u0627\u06cc\u062f \u0631\u0627\u0628\u0637\u06cc \u0631\u0627 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u06af\u0627\u0647 \u0642\u0647\u0648\u0647 \u0631\u0627 \u0628\u062f\u0647\u062f. \u0627\u06cc\u0646 \u0627\u063a\u0644\u0628 \u0642\u0633\u0645\u062a \u0645\u0647\u0645 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0627\u0633\u062a. \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0631\u0648\u0634\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u06af\u0627\u0647 \u0642\u0647\u0648\u0647 \u0627\u062c\u0628\u0627\u0631\u06cc \u0627\u0633\u062a \u060c \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f \u060c \u0627\u0645\u0627 \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0631\u0648\u0634\u0647\u0627\u06cc \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u06a9\u0647 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f \u060c \u0646\u06cc\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u060c \u0627\u06cc\u0646 \u0641\u0642\u0637 \u0631\u0648\u0634 brewCoffee \u0627\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0631\u0627\u0628\u0637 CoffeeMachine \u0641\u0642\u0637 \u06cc\u06a9 \u0631\u0648\u0634 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062a\u0648\u0633\u0637 \u0647\u0645\u0647 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u060c \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u0648\u062f.<\/p>\n<p class=\"prettyprint prettyprinted\"><span class=\"kwd\">public<\/span> <span class=\"kwd\">interface<\/span> <span class=\"typ\">CoffeeMachine<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> brewCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pln\"> selection<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">throws<\/span> <span class=\"typ\">CoffeeException<\/span><span class=\"pun\">;<\/span> <span class=\"pun\">}<\/span><\/p>\n<h3>\u062a\u0637\u0628\u06cc\u0642 \u06a9\u0644\u0627\u0633 BasicCoffeeMachine<\/h3>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u060c \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0644\u0627\u0633 BasicCoffeeMachine \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0631\u0648\u0634 brewCoffee \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u06a9\u0644\u06cc\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0634\u0645\u0627 \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u0627\u0633 BasicCoffeeMachine \u0631\u0627\u0628\u0637 CoffeeMachine \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p class=\"prettyprint prettyprinted\"><span class=\"kwd\">public<\/span> <span class=\"kwd\">class<\/span> <span class=\"typ\">BasicCoffeeMachine<\/span> <span class=\"kwd\">implements<\/span> <span class=\"typ\">CoffeeMachine<\/span> <span class=\"pun\">{<\/span> <span class=\"pun\">&#8230;<\/span> <span class=\"pun\">}<\/span><\/p>\n<h3>\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/h3>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc CoffeeMachine \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u062c\u0631\u0627\u06cc \u06a9\u0644\u0627\u0633 PremiumCoffeeMachine \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0627\u0632 \u06a9\u0644\u0627\u0633 BasicCoffeeMachine \u0627\u0633\u062a. \u0631\u0648\u0634 brewCoffee \u0622\u0646 \u060c \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0631\u0627\u0628\u0637 CoffeeMachine \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a \u060c \u0627\u0632 \u062f\u0648 \u06af\u0632\u06cc\u0646\u0647 \u0645\u062e\u062a\u0644\u0641 CoffeeSelections \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0631 \u0627\u0633\u0627\u0633 CoffeeSelection \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u060c \u0627\u06cc\u0646 \u0631\u0648\u0634 \u06cc\u06a9 \u0631\u0648\u0634 \u062e\u0635\u0648\u0635\u06cc \u0648 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0646\u062f \u06a9\u0647 \u0642\u0647\u0648\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u062f\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0647\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u06a9\u0644\u0627\u0633 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u062a\u0631\u06a9\u06cc\u0628\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u06cc\u06a9 Grinder \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0642\u0628\u0644 \u0627\u0632 \u062f\u0645 \u06a9\u0634\u06cc\u062f\u0646 \u0642\u0647\u0648\u0647 \u060c \u062f\u0627\u0646\u0647 \u0647\u0627\u06cc \u0642\u0647\u0648\u0647 \u0631\u0627 \u0622\u0633\u06cc\u0627\u0628 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p class=\"prettyprint prettyprinted\"><span class=\"kwd\">import<\/span><span class=\"pln\"> java<\/span><span class=\"pun\">.<\/span><span class=\"pln\">util<\/span><span class=\"pun\">.<\/span><span class=\"typ\">HashMap<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">import<\/span><span class=\"pln\"> java<\/span><span class=\"pun\">.<\/span><span class=\"pln\">util<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Map<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">public<\/span> <span class=\"kwd\">class<\/span> <span class=\"typ\">PremiumCoffeeMachine<\/span> <span class=\"kwd\">implements<\/span> <span class=\"typ\">CoffeeMachine<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pun\">&gt;<\/span><span class=\"pln\"> configMap<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pun\">&gt;<\/span><span class=\"pln\"> beans<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">Grinder<\/span><span class=\"pln\"> grinder<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">BrewingUnit<\/span><span class=\"pln\"> brewingUnit<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">PremiumCoffeeMachine<\/span><span class=\"pun\">(<\/span><span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pun\">&gt;<\/span><span class=\"pln\"> beans<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">beans <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> beans<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">grinder <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">Grinder<\/span><span class=\"pun\">();<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brewingUnit <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">BrewingUnit<\/span><span class=\"pun\">();<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">configMap <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">HashMap<\/span><span class=\"pun\">&lt;&gt;();<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">configMap<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pun\">(<\/span><span class=\"lit\">30<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">480<\/span><span class=\"pun\">));<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">configMap<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">ESPRESSO<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pun\">(<\/span><span class=\"lit\">8<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">28<\/span><span class=\"pun\">));<\/span> <span class=\"pun\">}<\/span> <span class=\"lit\">@Override<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> brewCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pln\"> selection<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">throws<\/span> <span class=\"typ\">CoffeeException<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">switch<\/span><span class=\"pun\">(<\/span><span class=\"pln\">selection<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">case<\/span><span class=\"pln\"> ESPRESSO<\/span><span class=\"pun\">:<\/span> <span class=\"kwd\">return<\/span><span class=\"pln\"> brewEspresso<\/span><span class=\"pun\">();<\/span> <span class=\"kwd\">case<\/span><span class=\"pln\"> FILTER_COFFEE<\/span><span class=\"pun\">:<\/span> <span class=\"kwd\">return<\/span><span class=\"pln\"> brewFilterCoffee<\/span><span class=\"pun\">();<\/span> <span class=\"kwd\">default<\/span><span class=\"pun\">:<\/span> <span class=\"kwd\">throw<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">CoffeeException<\/span><span class=\"pun\">(<\/span><span class=\"str\">&#8220;CoffeeSelection [&#8220;<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> selection <\/span><span class=\"pun\">+<\/span> <span class=\"str\">&#8220;] not supported!&#8221;<\/span><span class=\"pun\">);<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> brewEspresso<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pln\"> config <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> configMap<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">ESPRESSO<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ grind the coffee beans<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pln\"> groundCoffee <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">grinder<\/span><span class=\"pun\">.<\/span><span class=\"pln\">grind<\/span><span class=\"pun\">(<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">beans<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">ESPRESSO<\/span><span class=\"pun\">),<\/span><span class=\"pln\"> config<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantityCoffee<\/span><span class=\"pun\">());<\/span> <span class=\"com\">\/\/ brew an espresso<\/span> <span class=\"kwd\">return<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brewingUnit<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brew<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">ESPRESSO<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> groundCoffee<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> config<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantityWater<\/span><span class=\"pun\">());<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> brewFilterCoffee<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">Configuration<\/span><span class=\"pln\"> config <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> configMap<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ grind the coffee beans<\/span> <span class=\"typ\">GroundCoffee<\/span><span class=\"pln\"> groundCoffee <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">grinder<\/span><span class=\"pun\">.<\/span><span class=\"pln\">grind<\/span><span class=\"pun\">(<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">beans<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">),<\/span><span class=\"pln\"> config<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantityCoffee<\/span><span class=\"pun\">());<\/span> <span class=\"com\">\/\/ brew a filter coffee<\/span> <span class=\"kwd\">return<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brewingUnit<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brew<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> groundCoffee<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> config<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantityWater<\/span><span class=\"pun\">());<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">public<\/span> <span class=\"kwd\">void<\/span><span class=\"pln\"> addCoffeeBeans<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pln\"> sel<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pln\"> newBeans<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">throws<\/span> <span class=\"typ\">CoffeeException<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pln\"> existingBeans <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">beans<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">get<\/span><span class=\"pun\">(<\/span><span class=\"pln\">sel<\/span><span class=\"pun\">);<\/span> <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">existingBeans <\/span><span class=\"pun\">!=<\/span> <span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">existingBeans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getName<\/span><span class=\"pun\">().<\/span><span class=\"pln\">equals<\/span><span class=\"pun\">(<\/span><span class=\"pln\">newBeans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getName<\/span><span class=\"pun\">()))<\/span> <span class=\"pun\">{<\/span><span class=\"pln\"> existingBeans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setQuantity<\/span><span class=\"pun\">(<\/span><span class=\"pln\">existingBeans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantity<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> newBeans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getQuantity<\/span><span class=\"pun\">());<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">else<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">throw<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">CoffeeException<\/span><span class=\"pun\">(<\/span><span class=\"str\">&#8220;Only one kind of coffee supported for each CoffeeSelection.&#8221;<\/span><span class=\"pun\">);<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">else<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">beans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"pln\">sel<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> newBeans<\/span><span class=\"pun\">);<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-5938\" src=\"https:\/\/walvira.com\/weblog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid.png\" alt=\"\" width=\"822\" height=\"426\" srcset=\"https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid.png 822w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-300x155.png 300w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-768x398.png 768w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-772x400.png 772w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-507x263.png 507w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-438x227.png 438w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-420x218.png 420w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-500x259.png 500w, https:\/\/walvira.com\/blog\/wp-content\/uploads\/2021\/05\/\u0627\u0635\u0644-\u062f\u0648\u0645-\u062f\u0631-\u0627\u0635\u0648\u0644-solid-275x143.png 275w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/p>\n<p>\u062a\u0646\u0647\u0627 \u0645\u0648\u0631\u062f\u06cc \u06a9\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0622\u0646 \u0631\u0627\u0628\u0637 \u0627\u0633\u062a.<\/p>\n<h3>\u062a\u0637\u0628\u06cc\u0642 CoffeeApp<\/h3>\n<p>\u06a9\u0644\u0627\u0633 CoffeeApp \u0627\u0632 2 \u0642\u0633\u0645\u062a \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>\u06a9\u0644\u0627\u0633 CoffeeApp \u0648<br \/>\n\u0631\u0648\u0634 \u0627\u0635\u0644\u06cc<br \/>\n\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062e\u0627\u0635 CoffeeMachine \u0631\u0627 \u062f\u0631 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0627\u06af\u0631 \u0642\u0647\u0648\u0647 \u0633\u0627\u0632 \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f \u060c \u0647\u0645\u06cc\u0634\u0647 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0627 \u062f\u0631 \u067e\u06cc\u0634 \u0628\u06af\u06cc\u0631\u06cc\u062f. \u0627\u0645\u0627 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0644\u0627\u0633 CoffeeApp \u0627\u0632 \u0631\u0627\u0628\u0637 CoffeeMachine \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f \u060c \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0622\u0646 \u0646\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a.<\/p>\n<p class=\"prettyprint prettyprinted\"><span class=\"kwd\">import<\/span><span class=\"pln\"> java<\/span><span class=\"pun\">.<\/span><span class=\"pln\">util<\/span><span class=\"pun\">.<\/span><span class=\"typ\">HashMap<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">import<\/span><span class=\"pln\"> java<\/span><span class=\"pun\">.<\/span><span class=\"pln\">util<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Map<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">public<\/span> <span class=\"kwd\">class<\/span> <span class=\"typ\">CoffeeApp<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">private<\/span> <span class=\"typ\">CoffeeMachine<\/span><span class=\"pln\"> coffeeMachine<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">CoffeeApp<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeMachine<\/span><span class=\"pln\"> coffeeMachine<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">coffeeMachine <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> coffeeMachine<\/span><span class=\"pun\">;<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">public<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> prepareCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pln\"> selection<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">throws<\/span> <span class=\"typ\">CoffeeException<\/span> <span class=\"pun\">{<\/span> <span class=\"typ\">Coffee<\/span><span class=\"pln\"> coffee <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">coffeeMachine<\/span><span class=\"pun\">.<\/span><span class=\"pln\">brewCoffee<\/span><span class=\"pun\">(<\/span><span class=\"pln\">selection<\/span><span class=\"pun\">);<\/span> <span class=\"typ\">System<\/span><span class=\"pun\">.<\/span><span class=\"kwd\">out<\/span><span class=\"pun\">.<\/span><span class=\"pln\">println<\/span><span class=\"pun\">(<\/span><span class=\"str\">&#8220;Coffee is ready!&#8221;<\/span><span class=\"pun\">);<\/span> <span class=\"kwd\">return<\/span><span class=\"pln\"> coffee<\/span><span class=\"pun\">;<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">public<\/span> <span class=\"kwd\">static<\/span> <span class=\"kwd\">void<\/span><span class=\"pln\"> main<\/span><span class=\"pun\">(<\/span><span class=\"typ\">String<\/span><span class=\"pun\">[]<\/span><span class=\"pln\"> args<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span> <span class=\"com\">\/\/ create a Map of available coffee beans<\/span> <span class=\"typ\">Map<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pun\">&gt;;<\/span><span class=\"pln\"> beans <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">HashMap<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">,<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pun\">&gt;();<\/span><span class=\"pln\"> beans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">ESPRESSO<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pun\">(<\/span> <span class=\"str\">&#8220;My favorite espresso bean&#8221;<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">1000<\/span><span class=\"pun\">));<\/span><span class=\"pln\"> beans<\/span><span class=\"pun\">.<\/span><span class=\"pln\">put<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">FILTER_COFFEE<\/span><span class=\"pun\">,<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">CoffeeBean<\/span><span class=\"pun\">(<\/span> <span class=\"str\">&#8220;My favorite filter coffee bean&#8221;<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">1000<\/span><span class=\"pun\">));<\/span> <span class=\"com\">\/\/ get a new CoffeeMachine object<\/span> <span class=\"typ\">PremiumCoffeeMachine<\/span><span class=\"pln\"> machine <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">PremiumCoffeeMachine<\/span><span class=\"pun\">(<\/span><span class=\"pln\">beans<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ Instantiate CoffeeApp<\/span> <span class=\"typ\">CoffeeApp<\/span><span class=\"pln\"> app <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">CoffeeApp<\/span><span class=\"pun\">(<\/span><span class=\"pln\">machine<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ brew a fresh coffee<\/span> <span class=\"kwd\">try<\/span> <span class=\"pun\">{<\/span><span class=\"pln\"> app<\/span><span class=\"pun\">.<\/span><span class=\"pln\">prepareCoffee<\/span><span class=\"pun\">(<\/span><span class=\"typ\">CoffeeSelection<\/span><span class=\"pun\">.<\/span><span class=\"pln\">ESPRESSO<\/span><span class=\"pun\">);<\/span> <span class=\"pun\">}<\/span> <span class=\"kwd\">catch<\/span> <span class=\"pun\">(<\/span><span class=\"typ\">CoffeeException<\/span><span class=\"pln\"> e<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span><span class=\"pln\"> e<\/span><span class=\"pun\">.<\/span><span class=\"pln\">printStackTrace<\/span><span class=\"pun\">();<\/span> <span class=\"pun\">}<\/span> <span class=\"pun\">}<\/span> <span class=\"com\">\/\/ end main<\/span> <span class=\"pun\">}<\/span> <span class=\"com\">\/\/ end CoffeeApp<\/span><\/p>\n<p>\u062e\u0644\u0627\u0635\u0647<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0646\u06af\u0627\u0647\u06cc \u062f\u0642\u06cc\u0642 \u0628\u0647 \u0627\u0635\u0644 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0645\u0646\u0641\u0631\u062f \u062f\u0631 \u067e\u0633\u062a \u0642\u0628\u0644\u06cc \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u060c \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0635\u0644 \u0628\u0627\u0632 \/ \u0628\u0633\u062a\u0647 \u0628\u062d\u062b \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u0646\u062c \u0627\u0635\u0644 \u0637\u0631\u0627\u062d\u06cc SOLID \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0631\u0627\u0628\u0631\u062a \u0633\u06cc. \u0645\u0627\u0631\u062a\u06cc\u0646 \u062a\u0648\u0635\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u0635\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0627\u0628\u0637 \u0647\u0627 \u0631\u0627 \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0634\u0645\u0627 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0633\u0627\u0632\u062f \u062a\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u062a\u0637\u0628\u06cc\u0642 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0635\u0644 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062b\u0627\u0644 \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u0646\u0648\u0627\u0639 \u062f\u0633\u062a\u06af\u0627\u0647\u0647\u0627\u06cc \u0642\u0647\u0648\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 CoffeeApp \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9 \u062f\u0633\u062a\u06af\u0627\u0647 \u0642\u0647\u0648\u0647 \u0631\u0627\u0628\u0637 CoffeeMachine \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0628\u0631\u0646\u0627\u0645\u0647 \u0622\u0646 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f. \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0647\u0646\u06af\u0627\u0645 \u062a\u0639\u0648\u06cc\u0636 \u062f\u0633\u062a\u06af\u0627\u0647 \u0642\u0647\u0648\u0647 \u0645\u0648\u062c\u0648\u062f \u062e\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f \u0627\u0631\u0627\u0626\u0647 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062c\u062f\u06cc\u062f \u0627\u0632 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc \u062e\u0627\u0635 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0642\u062f\u0645 \u062c\u0644\u0648 \u0628\u0631\u0648\u06cc\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u060c \u0627\u0646\u0639\u06a9\u0627\u0633 \u06cc\u0627 API \u0644\u0648\u062f\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0631\u0627\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0646\u0645\u0648\u0646\u0647 \u0633\u0627\u0632\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062e\u0627\u0635 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SOLID \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627\u06cc \u0627\u0635\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0634\u06cc \u06af\u0631\u0627 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u0644\u0645\u0647 \u0645\u062e\u0641\u0641 5 \u0627\u0635\u0644 \u0637\u0631\u0627\u062d\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a: Single Responsibility Principle Open\/Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle \u0627\u0628\u062f\u0627\u0639 \u06a9\u0646\u0646\u062f\u0647 \u06cc \u0627\u0635\u0648\u0644 SOLID \u06a9\u06cc\u0633\u062a\u061f \u067e\u0646\u062c \u0627\u0635\u0644 SOLID \u062a\u0648\u0633\u0637 Robert C.Martin \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u0645\u0637\u0631\u062d \u0634\u062f.&hellip;<\/p>\n","protected":false},"author":2,"featured_media":5940,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[495],"tags":[315,316,311],"aioseo_notices":[],"amp_validity":null,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/posts\/5937"}],"collection":[{"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/comments?post=5937"}],"version-history":[{"count":2,"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/posts\/5937\/revisions"}],"predecessor-version":[{"id":6352,"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/posts\/5937\/revisions\/6352"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/media\/5940"}],"wp:attachment":[{"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/media?parent=5937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/categories?post=5937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/walvira.com\/blog\/wp-json\/wp\/v2\/tags?post=5937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}