{"id":31293,"date":"2023-06-26T17:47:10","date_gmt":"2023-06-26T13:17:10","guid":{"rendered":"https:\/\/wpadmin.maktabkhooneh.org\/mag\/?p=31293"},"modified":"2026-04-06T17:45:33","modified_gmt":"2026-04-06T14:15:33","slug":"solid-principles-in-programming","status":"publish","type":"post","link":"https:\/\/maktabkhooneh.org\/mag\/solid-principles-in-programming\/","title":{"rendered":"\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc"},"content":{"rendered":"\n<p>\u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u067e\u0646\u062c \u0627\u0635\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0637\u0631\u0627\u062d\u06cc \u06a9\u0644\u0627\u0633 \u0634\u06cc \u06af\u0631\u0627 (Object Oriented) \u0631\u0627 \u0647\u062f\u0627\u06cc\u062a \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u062e\u0648\u0628 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0648 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0631\u0627 \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0622\u0646\u200c\u0647\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u0627\u0633 \u0642\u0648\u06cc \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u0627\u0632 \u0645\u06a9\u062a\u0648\u0628\u060c \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0627\u0635\u0648\u0644 \u0633\u0627\u0644\u06cc\u062f (solid principles) \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0622\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a \u0647\u0631 \u0627\u0635\u0644 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0635\u0648\u0644\u060c \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0646\u062f \u06a9\u0647 \u062f\u0631\u06a9\u060c \u062e\u0648\u0627\u0646\u062f\u0646 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0622\u0646 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0628\u0627\u0634\u062f \u0648 \u06a9\u0627\u0631 \u0645\u0634\u062a\u0631\u06a9 \u0631\u0627 \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0627\u0639\u0636\u0627\u06cc \u062a\u06cc\u0645 \u062a\u0633\u0647\u06cc\u0644 \u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p>\u0627\u0635\u0637\u0644\u0627\u062d SOLID \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u062a\u0648\u0633\u0637 \u0645\u0627\u06cc\u06a9\u0644 \u0641\u06cc\u0631\u0632 \u0645\u0639\u0631\u0641\u06cc \u0634\u062f\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062e\u0648\u062f \u0627\u0635\u0648\u0644 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u062a\u0648\u0633\u0637 \u0631\u0627\u0628\u0631\u062a \u062c\u06cc. \u0645\u0627\u0631\u062a\u06cc\u0646\u060c \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0646\u0627\u0645 \u0639\u0645\u0648 \u0628\u0627\u0628\u060c \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u062e\u0648\u062f \u062f\u0631 \u0633\u0627\u0644 \u06f2\u06f0\u06f0\u06f0 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f. \u0639\u0645\u0648 \u0628\u0627\u0628 \u062f\u0627\u0646\u0634\u0645\u0646\u062f \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631 \u0645\u0634\u0647\u0648\u0631\u060c \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u06cc \u067e\u0631\u0641\u0631\u0648\u0634\u06cc \u0645\u0627\u0646\u0646\u062f \u00abClean Code\u00bb \u0648 \u00abClean Architecture\u00bb \u0648 \u06cc\u06a9\u06cc \u0627\u0632 \u0634\u0631\u06a9\u062a\u200c\u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0641\u0639\u0627\u0644 \u062f\u0631 Agile Alliance \u0627\u0633\u062a.<\/p>\n\n\n\n<p>\u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0628\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u062a\u0645\u06cc\u0632\u060c \u0645\u0639\u0645\u0627\u0631\u06cc \u0634\u06cc \u06af\u0631\u0627 \u0648 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0647\u0645\u0633\u0648 \u0647\u0633\u062a\u0646\u062f\u060c \u0632\u06cc\u0631\u0627 \u0647\u0645\u06af\u06cc \u0647\u062f\u0641 \u0645\u0634\u062a\u0631\u06a9 \u0627\u06cc\u062c\u0627\u062f \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u0628\u0627\u0644\u0627 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f. \u062f\u0631 \u0627\u0635\u0644 SOLID \u0627\u0632 \u06f5 \u0627\u0635\u0644 \u0627\u0633\u0627\u0633\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0647\u0633\u062a\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0627\u0635\u0644 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648\u0627\u062d\u062f (Single Responsibility Principle)<\/li>\n\n\n\n<li>\u0627\u0635\u0644 \u0628\u0627\u0632 &#8211; \u0628\u0633\u062a\u0647 (Open-Closed Principle)<\/li>\n\n\n\n<li>\u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0644\u06cc\u0633\u06a9\u0648\u0641 (Liskov Substitution Principle)<\/li>\n\n\n\n<li>\u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 (Interface Segregation Principle)<\/li>\n\n\n\n<li>\u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc (Dependency Inversion Principle)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/solid-design-principles-in-kotlin-v0-0q4xqygg7jfa1.webp\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"388\" src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/solid-design-principles-in-kotlin-v0-0q4xqygg7jfa1-1024x388.webp\" alt=\"SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\" class=\"wp-image-31295\" title=\"\" srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/solid-design-principles-in-kotlin-v0-0q4xqygg7jfa1-1024x388.webp 1024w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/solid-design-principles-in-kotlin-v0-0q4xqygg7jfa1-300x114.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/solid-design-principles-in-kotlin-v0-0q4xqygg7jfa1-768x291.webp 768w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/solid-design-principles-in-kotlin-v0-0q4xqygg7jfa1.webp 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><\/figcaption><\/figure>\n\n\n\n<p>\u0627\u0635\u0648\u0644 \u0633\u0627\u0644\u06cc\u062f \u0631\u0627 \u062f\u0631 \u0647\u0645\u0647 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0634\u06cc \u06af\u0631\u0627 \u0645\u0627\u0646\u0646\u062f \u067e\u0627\u06cc\u062a\u0648\u0646\u060c \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0633\u06cc \u0634\u0627\u0631\u067e\u060c net core \u0648 \u063a\u06cc\u0631\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0647 \u06a9\u0627\u0631 \u06af\u0631\u0641\u062a. \u062f\u0631 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc\u060c \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0627\u0647\u0645\u06cc\u062a \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u0648 \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0622\u0646 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0628\u0647 \u06a9\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u0624\u062b\u0631 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n\n\n<div class=\"jet-listing-grid--50192\" style=\"\"><style><\/style><section class=\"zht-related-post\" itemscope=\"\" itemtype=\"https:\/\/schema.org\/Article\" role=\"region\"\n  aria-label=\"Related article\">\n  <div class=\"zht-related-post-section-label\">\n    \u0645\u0637\u0627\u0644\u0628 \u0645\u0631\u062a\u0628\u0637\n  <\/div>\n  <img decoding=\"async\" width=\"300\" height=\"169\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/test-driven-development-for-secure-infrastructure-300x169.png.webp\" class=\"attachment-medium size-medium wp-post-image lazyload\" alt=\"TDD \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0686\u06cc\u0633\u062a\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/test-driven-development-for-secure-infrastructure-300x169.png.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/test-driven-development-for-secure-infrastructure-1024x576.png.webp 1024w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/test-driven-development-for-secure-infrastructure-768x432.png.webp 768w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/test-driven-development-for-secure-infrastructure.png 1200w\" data-sizes=\"(max-width: 300px) 100vw, 300px\" title=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 300px; --smush-placeholder-aspect-ratio: 300\/169;\">\n  <a href=\"https:\/\/maktabkhooneh.org\/mag\/tdd-in-programming\/\" class=\"zht-related-post-title\"\n    itemprop=\"headline\" target=\"_blank\">\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u0645\u0641\u0647\u0648\u0645 TDD \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/a>\n<\/section><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0635\u0644 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648\u0627\u062d\u062f \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/h3>\n\n\n\n<p>\u0627\u0635\u0644 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648\u0627\u062d\u062f (SRP) \u062a\u0623\u06a9\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0628\u0627\u06cc\u062f \u062a\u0646\u0647\u0627 \u06cc\u06a9 \u062f\u0644\u06cc\u0644 \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0627\u0635\u0644 \u0645\u0630\u06a9\u0648\u0631 \u0627\u06cc\u0646 \u0627\u06cc\u062f\u0647 \u0631\u0627 \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u0644\u0627\u0633 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648\u0627\u062d\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u062a\u0646\u0647\u0627 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u062d\u0644 \u06a9\u0646\u062f. \u0628\u0627 \u0631\u0639\u0627\u06cc\u062a \u0627\u06cc\u0646 \u0627\u0635\u0644\u060c \u062a\u0633\u062a\u060c \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u062f\u0631\u06a9 \u06a9\u062f \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SRP \u062f\u0631 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u060c \u0627\u062c\u0632\u0627\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0648 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0647 \u0637\u0631\u0627\u062d\u06cc \u0628\u0647\u062a\u0631 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0645\u0646\u062c\u0631 \u0634\u062f\u0647 \u0648 \u0628\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0639\u0648\u0627\u0631\u0636 \u062c\u0627\u0646\u0628\u06cc \u0646\u0627\u062e\u0648\u0627\u0633\u062a\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" width=\"800\" height=\"450\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/1678595401555.png\" alt=\"SRP \u0686\u06cc\u0633\u062a\" class=\"wp-image-31296 lazyload\" title=\"\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/1678595401555.png 800w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/1678595401555-300x169.png.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/1678595401555-768x432.png.webp 768w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/450;\" \/><figcaption><\/figcaption><\/figure>\n\n\n\n<p>\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u0646\u0637\u0628\u0627\u0642 \u0628\u0627 SRP\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0631 \u0637\u0648\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f \u0633\u0627\u062e\u062a \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0627\u0645\u0646\u0647 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0641\u06cc\u062f \u0628\u0627\u0634\u062f. \u0627\u06af\u0631\u0686\u0647 \u0627\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u0628\u06cc\u200c\u062e\u0637\u0627 \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0646\u0642\u0636\u200c\u0647\u0627\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0635\u0644 \u06a9\u0645\u06a9 \u06a9\u0631\u062f\u0647 \u0648 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0633\u0645\u062a \u0637\u0631\u0627\u062d\u06cc \u0628\u0647\u062a\u0631 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648\u0627\u062d\u062f<\/h3>\n\n\n\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0635\u0644 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648\u0627\u062d\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Invoice<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> number<span class=\"token punctuation\">,<\/span> customer<span class=\"token punctuation\">,<\/span> items<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>number <span class=\"token operator\">=<\/span> number\n        self<span class=\"token punctuation\">.<\/span>customer <span class=\"token operator\">=<\/span> customer\n        self<span class=\"token punctuation\">.<\/span>items <span class=\"token operator\">=<\/span> items\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">calculate_total<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        total <span class=\"token operator\">=<\/span> <span class=\"token number\">\u06f0<\/span>\n        <span class=\"token keyword\">for<\/span> item <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">:<\/span>\n            total <span class=\"token operator\">+=<\/span> item<span class=\"token punctuation\">.<\/span>price <span class=\"token operator\">*<\/span> item<span class=\"token punctuation\">.<\/span>quantity\n        <span class=\"token keyword\">return<\/span> total\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">print_invoice<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Invoice Number:\"<\/span><span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>number<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Customer:\"<\/span><span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>customer<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Items:\"<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">for<\/span> item <span class=\"token keyword\">in<\/span> self<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">.<\/span>name<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"-\"<\/span><span class=\"token punctuation\">,<\/span> item<span class=\"token punctuation\">.<\/span>price<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"x\"<\/span><span class=\"token punctuation\">,<\/span> item<span class=\"token punctuation\">.<\/span>quantity<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Total:\"<\/span><span class=\"token punctuation\">,<\/span> self<span class=\"token punctuation\">.<\/span>calculate_total<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Item<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">,<\/span> price<span class=\"token punctuation\">,<\/span> quantity<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>name <span class=\"token operator\">=<\/span> name\n        self<span class=\"token punctuation\">.<\/span>price <span class=\"token operator\">=<\/span> price\n        self<span class=\"token punctuation\">.<\/span>quantity <span class=\"token operator\">=<\/span> quantity<\/code><\/pre>\n\n\n\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u062f\u0648 \u06a9\u0644\u0627\u0633 \u062f\u0627\u0631\u06cc\u0645: Invoice \u0648 Item. \u06a9\u0644\u0627\u0633 Invoice \u0648\u0638\u06cc\u0641\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0641\u0627\u06a9\u062a\u0648\u0631\u060c \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0644 \u0645\u0628\u0644\u063a \u0648 \u0686\u0627\u067e \u0641\u0627\u06a9\u062a\u0648\u0631 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f. \u06a9\u0644\u0627\u0633 Item \u0646\u0634\u0627\u0646\u200c\u062f\u0647\u0646\u062f\u0647 \u0627\u0642\u0644\u0627\u0645 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631 \u0641\u0627\u06a9\u062a\u0648\u0631 \u0627\u0633\u062a. \u06a9\u0644\u0627\u0633 Invoice \u06cc\u06a9 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u062f\u0627\u0631\u062f \u0648 \u0622\u0646 \u0627\u0646\u062c\u0627\u0645 \u0648\u0638\u0627\u06cc\u0641 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0641\u0627\u06a9\u062a\u0648\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u0645\u0646\u0637\u0642 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0644 \u0645\u0628\u0644\u063a \u0648 \u0686\u0627\u067e \u0641\u0627\u06a9\u062a\u0648\u0631 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0645\u06cc\u200c\u06af\u06cc\u0631\u062f. \u0627\u06cc\u0646 \u062a\u0641\u06a9\u06cc\u06a9 \u0646\u06af\u0631\u0627\u0646\u06cc\u200c\u0647\u0627 \u062f\u0631\u06a9\u060c \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u062f \u0631\u0627 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p>\u0627\u06af\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06cc\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc\u06cc \u062f\u0631 \u0645\u062d\u0627\u0633\u0628\u0647 \u06cc\u0627 \u0686\u0627\u067e \u0641\u0627\u06a9\u062a\u0648\u0631\u0647\u0627 \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f\u060c \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u06a9\u0644\u0627\u0633 Invoice \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0631 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u062e\u0627\u0635 \u062e\u0648\u062f \u0645\u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0647 \u0627\u0635\u0644 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0648\u0627\u062d\u062f \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u06cc\u0628\u0646\u062f \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0647\u0631 \u06a9\u0644\u0627\u0633 \u06cc\u06a9 \u0647\u062f\u0641 \u0645\u0634\u062e\u0635 \u062f\u0627\u0631\u062f \u0648 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u062f.<\/p>\n\n\n\n<p>\u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0635\u0644\u060c \u06a9\u062f \u0645\u0627\u0698\u0648\u0644\u0627\u0631\u062a\u0631\u060c \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u062a\u0631 \u0648 \u062a\u0648\u0633\u0639\u0647 \u0622\u0646 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u062e\u0637\u0631 \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06a9\u0627\u0644\u0627\u062a\u060c \u0628\u0627\u06af \u06cc\u0627 \u0639\u0648\u0627\u0631\u0636 \u062c\u0627\u0646\u0628\u06cc \u0646\u0627\u062e\u0648\u0627\u0633\u062a\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0628\u0647 \u062d\u062f\u0627\u0642\u0644 \u0645\u06cc\u200c\u0631\u0633\u0627\u0646\u062f\u060c \u0632\u06cc\u0631\u0627 \u0647\u0631 \u06a9\u0644\u0627\u0633 \u0628\u0631 \u0631\u0648\u06cc \u0648\u0638\u06cc\u0641\u0647 \u062e\u0627\u0635 \u062e\u0648\u062f \u0645\u062a\u0645\u0631\u06a9\u0632 \u0627\u0633\u062a.<\/p>\n\n\n<div class=\"jet-listing-grid--50192\" style=\"\"><section class=\"zht-related-post\" itemscope=\"\" itemtype=\"https:\/\/schema.org\/Article\" role=\"region\"\n  aria-label=\"Related article\">\n  <div class=\"zht-related-post-section-label\">\n    \u0645\u0637\u0627\u0644\u0628 \u0645\u0631\u062a\u0628\u0637\n  <\/div>\n  <img decoding=\"async\" width=\"300\" height=\"193\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/Instance-Variable-in-Java-Syntax-with-Examples-300x193.webp\" class=\"attachment-medium size-medium wp-post-image lazyload\" alt=\"instance \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/Instance-Variable-in-Java-Syntax-with-Examples-300x193.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/Instance-Variable-in-Java-Syntax-with-Examples-768x493.webp 768w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/Instance-Variable-in-Java-Syntax-with-Examples.webp 780w\" data-sizes=\"(max-width: 300px) 100vw, 300px\" title=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 300px; --smush-placeholder-aspect-ratio: 300\/193;\">\n  <a href=\"https:\/\/maktabkhooneh.org\/mag\/instance-in-programming\/\" class=\"zht-related-post-title\"\n    itemprop=\"headline\" target=\"_blank\">\u062f\u0631\u06a9 \u0645\u0641\u0647\u0648\u0645 instance \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc \u0622\u0646<\/a>\n<\/section><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0635\u0644 \u0628\u0627\u0632 \u0628\u0633\u062a\u0647 \u062f\u0631 SOLID<\/h3>\n\n\n\n<p>\u0627\u0635\u0644 \u0628\u0627\u0632 \u0628\u0633\u062a\u0647 (OCP) \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0627\u0632 \u0628\u0627\u0634\u0646\u062f \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0635\u0644\u0627\u062d \u0628\u0633\u062a\u0647 \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0646\u0628\u0627\u06cc\u062f \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u062c\u062f\u06cc\u062f\u060c \u0627\u0635\u0644\u0627\u062d \u0634\u0648\u0646\u062f. \u062f\u0631 \u0639\u0648\u0636\u060c \u0647\u062f\u0641 \u06af\u0633\u062a\u0631\u0634 \u0631\u0641\u062a\u0627\u0631 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0622\u0646 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u0635\u0644 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u062b\u0628\u0627\u062a \u06a9\u062f \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"683\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/open-closed-principle-solid-banner-overcoded.jpg\" alt=\"\u0627\u0635\u0644 \u0628\u0627\u0632 \u0628\u0633\u062a\u0647 \u062f\u0631 SOLID\" class=\"wp-image-31297 lazyload\" title=\"\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/open-closed-principle-solid-banner-overcoded.jpg 1024w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/open-closed-principle-solid-banner-overcoded-300x200.jpg.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/open-closed-principle-solid-banner-overcoded-768x512.jpg.webp 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/683;\" \/><figcaption><\/figcaption><\/figure>\n\n\n\n<p>\u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u0628\u0646\u062f\u06cc \u0628\u0647 OCP\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u0646\u062a\u0632\u0627\u0639\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0648\u0631\u0627\u062b\u062a \u06cc\u0627 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u200c\u0647\u0627\u06cc \u0686\u0646\u062f\u0634\u06a9\u0644\u06cc \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0645\u0639\u0631\u0641\u06cc \u0644\u0627\u06cc\u0647\u200c\u0647\u0627\u06cc \u0627\u0646\u062a\u0632\u0627\u0639\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0641\u062a\u0627\u0631 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0622\u0646\u200c\u0647\u0627 \u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u06cc\u062f. \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 OCP \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06a9\u062f \u0628\u0647\u200c\u0631\u0627\u062d\u062a\u06cc \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/p>\n\n\n<div class=\"jet-listing-grid--50192\" style=\"\"><section class=\"zht-related-post\" itemscope=\"\" itemtype=\"https:\/\/schema.org\/Article\" role=\"region\"\n  aria-label=\"Related article\">\n  <div class=\"zht-related-post-section-label\">\n    \u0645\u0637\u0627\u0644\u0628 \u0645\u0631\u062a\u0628\u0637\n  <\/div>\n  <img decoding=\"async\" width=\"300\" height=\"200\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2020\/09\/programming-tutorial-books-2-300x200.jpg.webp\" class=\"attachment-medium size-medium wp-post-image lazyload\" alt=\"\u0622\u0645\u0648\u0632\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u0628\u0627 \u0686\u0647 \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u06cc\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2020\/09\/programming-tutorial-books-2-300x200.jpg.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2020\/09\/programming-tutorial-books-2-768x512.jpg.webp 768w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2020\/09\/programming-tutorial-books-2.jpg 1000w\" data-sizes=\"(max-width: 300px) 100vw, 300px\" title=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 300px; --smush-placeholder-aspect-ratio: 300\/200;\">\n  <a href=\"https:\/\/maktabkhooneh.org\/mag\/programming-tutorial-books\/\" class=\"zht-related-post-title\"\n    itemprop=\"headline\" target=\"_blank\">\u0645\u0639\u0631\u0641\u06cc \u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u200c \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c \u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 \u062f\u0646\u06cc\u0627 &#8211; \u06a9\u0627\u0645\u0644\u062a\u0631\u06cc\u0646 \u0641\u0647\u0631\u0633\u062a<\/a>\n<\/section><\/div>\n\n\n<h4 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u0628\u0627\u0632 \u0648 \u0628\u0633\u062a\u0647<\/h4>\n\n\n\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u0628\u0627\u0632 \u2013 \u0628\u0633\u062a\u0647 \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span class=\"token keyword\">from<\/span> abc <span class=\"token keyword\">import<\/span> ABC<span class=\"token punctuation\">,<\/span> abstractmethod\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">InvoicePersistence<\/span><span class=\"token punctuation\">(<\/span>ABC<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">save<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> invoice<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">FilePersistence<\/span><span class=\"token punctuation\">(<\/span>InvoicePersistence<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">save<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> invoice<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token comment\"># Save the invoice to a file<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Saving invoice to file:\"<\/span><span class=\"token punctuation\">,<\/span> invoice<span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">DatabasePersistence<\/span><span class=\"token punctuation\">(<\/span>InvoicePersistence<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">save<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> invoice<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token comment\"># Save the invoice to a database<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Saving invoice to database:\"<\/span><span class=\"token punctuation\">,<\/span> invoice<span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">PersistenceManager<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> persistence<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>persistence <span class=\"token operator\">=<\/span> persistence\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">save_invoice<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> invoice<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>persistence<span class=\"token punctuation\">.<\/span>save<span class=\"token punctuation\">(<\/span>invoice<span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Usage example<\/span>\ninvoice <span class=\"token operator\">=<\/span> <span class=\"token string\">\"Sample Invoice\"<\/span>\nfile_persistence <span class=\"token operator\">=<\/span> FilePersistence<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\ndb_persistence <span class=\"token operator\">=<\/span> DatabasePersistence<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\npm <span class=\"token operator\">=<\/span> PersistenceManager<span class=\"token punctuation\">(<\/span>file_persistence<span class=\"token punctuation\">)<\/span>\npm<span class=\"token punctuation\">.<\/span>save_invoice<span class=\"token punctuation\">(<\/span>invoice<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Saving invoice to file: Sample Invoice<\/span>\n\npm <span class=\"token operator\">=<\/span> PersistenceManager<span class=\"token punctuation\">(<\/span>db_persistence<span class=\"token punctuation\">)<\/span>\npm<span class=\"token punctuation\">.<\/span>save_invoice<span class=\"token punctuation\">(<\/span>invoice<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Saving invoice to database: Sample Invoice<\/span><\/code><\/pre>\n\n\n\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0641\u0648\u0642\u060c \u0645\u0627 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0627\u0646\u062a\u0632\u0627\u0639\u06cc InvoicePersistence \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0630\u062e\u06cc\u0631\u0647 \u06cc\u06a9 \u0641\u0627\u06a9\u062a\u0648\u0631 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0627\u0632 \u0627\u0635\u0644 Open-Closed \u067e\u06cc\u0631\u0648\u06cc \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f \u0648 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0628\u0627\u0632 (\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u0627\u0646\u062f\u06af\u0627\u0631\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f) \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u0635\u0644\u0627\u062d \u0628\u0633\u062a\u0647 \u0627\u0633\u062a (\u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a).<\/p>\n\n\n\n<p>\u0645\u0627 \u062f\u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0634\u062e\u0635 \u0627\u0632 InvoicePersistence \u062f\u0627\u0631\u06cc\u0645: FilePersistence \u0648 DatabasePersistence. \u0647\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0645\u0646\u0637\u0642 \u062e\u0627\u0635 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06a9\u062a\u0648\u0631 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06cc\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06a9\u0644\u0627\u0633 PersistenceManager \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0627\u0646\u062a\u0632\u0627\u0639 (InvoicePersistence) \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f \u062a\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u0634\u062e\u0635. \u0627\u06cc\u0646 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 InvoicePersistence \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 \u062e\u0648\u062f \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\u060c \u0648 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u0632\u0631\u06cc\u0642 \u0634\u0648\u062f.<\/p>\n\n\n\n<p>\u0628\u0627 \u0631\u0639\u0627\u06cc\u062a \u0627\u0635\u0644 \u0628\u0627\u0632-\u0628\u0633\u062a\u0647 \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0634\u06cc \u06af\u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647\u200c\u0631\u0627\u062d\u062a\u06cc \u0627\u0646\u0648\u0627\u0639 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u0627\u0646\u062f\u06af\u0627\u0631 (\u0645\u0627\u0646\u0646\u062f \u0630\u062e\u06cc\u0631\u0647 \u062f\u0631 API\u060c \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc \u0648 \u063a\u06cc\u0631\u0647) \u0631\u0627 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u06a9\u0647 InvoicePersistence \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 PersistenceManager \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f\u060c \u0642\u0627\u0628\u0644\u06cc\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u06af\u0633\u062a\u0631\u0634 \u06a9\u062f \u0631\u0627 \u0627\u0631\u062a\u0642\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n<div class=\"jet-listing-grid--50192\" style=\"\"><section class=\"zht-related-post\" itemscope=\"\" itemtype=\"https:\/\/schema.org\/Article\" role=\"region\"\n  aria-label=\"Related article\">\n  <div class=\"zht-related-post-section-label\">\n    \u0645\u0637\u0627\u0644\u0628 \u0645\u0631\u062a\u0628\u0637\n  <\/div>\n  <img decoding=\"async\" width=\"300\" height=\"180\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/05\/API-threats-300x180.jpg.webp\" class=\"attachment-medium size-medium wp-post-image lazyload\" alt=\"API \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/05\/API-threats-300x180.jpg.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/05\/API-threats-768x461.jpg.webp 768w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/05\/API-threats.jpg 1000w\" data-sizes=\"(max-width: 300px) 100vw, 300px\" title=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 300px; --smush-placeholder-aspect-ratio: 300\/180;\">\n  <a href=\"https:\/\/maktabkhooneh.org\/mag\/api-in-programming\/\" class=\"zht-related-post-title\"\n    itemprop=\"headline\" target=\"_blank\">API \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0686\u06cc\u0633\u062a \u0648 \u0686\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0627\u0631\u062f\u061f<\/a>\n<\/section><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/h3>\n\n\n\n<p>\u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0644\u06cc\u0633\u06a9\u0648\u0641 &nbsp;(LSP) \u0628\u06cc\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0627\u0634\u06cc\u0627\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0628\u0627\u06cc\u062f \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u0635\u062d\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0627\u0634\u06cc\u0627\u06cc \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u062e\u0648\u062f \u0634\u0648\u0646\u062f. \u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u060c \u0627\u06cc\u0646 \u0627\u0635\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0641\u062a\u0627\u0631 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0633\u06cc\u0633\u062a\u0645\u060c \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u0647 \u062e\u0648\u062f \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" width=\"1024\" height=\"683\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/liskov-substitution-principle-lsp-banner-overcoded.jpg\" alt=\"\u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID\" class=\"wp-image-31298 lazyload\" title=\"\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/liskov-substitution-principle-lsp-banner-overcoded.jpg 1024w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/liskov-substitution-principle-lsp-banner-overcoded-300x200.jpg.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/liskov-substitution-principle-lsp-banner-overcoded-768x512.jpg.webp 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/683;\" \/><figcaption><\/figcaption><\/figure>\n\n\n\n<p>LSP \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u06cc\u062f\u0647\u200c\u0647\u0627\u06cc OCP \u0628\u0627 \u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0632\u06cc\u0631\u06af\u0631\u0648\u0647 \u0633\u0627\u0632\u06cc \u0631\u0641\u062a\u0627\u0631\u06cc \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0634\u062a\u0642 \u0634\u062f\u0647\u060c \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0645\u0639\u0631\u0641\u06cc \u0631\u0641\u062a\u0627\u0631 \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u06cc\u0627 \u0634\u06a9\u0633\u062a\u0646 \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u06af\u0633\u062a\u0631\u0634 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 LSP\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0628\u0631\u0648\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u062f\u0631 \u062d\u06cc\u0646 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062f\u0631\u06a9 LSP \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0686\u0627\u0644\u0634\u200c\u0628\u0631\u0627\u0646\u06af\u06cc\u0632 \u0628\u0627\u0634\u062f\u060c \u0627\u0635\u0648\u0644 \u062a\u0648\u0633\u0639\u0647\u200c\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0633\u0627\u06cc\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u062a\u0642\u0648\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 LSP \u062f\u0631 \u0637\u0648\u0644 \u062a\u0648\u0633\u0639\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u067e\u06cc\u0634\u200c\u0628\u06cc\u0646\u06cc \u0648 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0633\u0627\u0626\u0644\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0627\u0634\u06cc\u0627\u0621 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0628\u0647\u200c\u062c\u0627\u06cc \u0647\u0645\u062a\u0627\u06cc\u0627\u0646 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u06cc\u062f\u060c \u06a9\u0645\u06a9 \u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc<\/h3>\n\n\n\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span class=\"token keyword\">from<\/span> abc <span class=\"token keyword\">import<\/span> ABC<span class=\"token punctuation\">,<\/span> abstractmethod\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Shape<\/span><span class=\"token punctuation\">(<\/span>ABC<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">area<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Rectangle<\/span><span class=\"token punctuation\">(<\/span>Shape<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> width<span class=\"token punctuation\">,<\/span> height<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>width <span class=\"token operator\">=<\/span> width\n        self<span class=\"token punctuation\">.<\/span>height <span class=\"token operator\">=<\/span> height\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">area<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>width <span class=\"token operator\">*<\/span> self<span class=\"token punctuation\">.<\/span>height\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Square<\/span><span class=\"token punctuation\">(<\/span>Shape<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> side_length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>side_length <span class=\"token operator\">=<\/span> side_length\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">area<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>side_length <span class=\"token operator\">**<\/span> <span class=\"token number\">\u06f2<\/span>\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">calculate_total_area<\/span><span class=\"token punctuation\">(<\/span>shapes<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    total_area <span class=\"token operator\">=<\/span> <span class=\"token number\">\u06f0<\/span>\n    <span class=\"token keyword\">for<\/span> shape <span class=\"token keyword\">in<\/span> shapes<span class=\"token punctuation\">:<\/span>\n        total_area <span class=\"token operator\">+=<\/span> shape<span class=\"token punctuation\">.<\/span>area<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">return<\/span> total_area\n\n<span class=\"token comment\"># Usage<\/span>\nshapes <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">&#91;<\/span>Rectangle<span class=\"token punctuation\">(<\/span><span class=\"token number\">\u06f4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">\u06f5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> Square<span class=\"token punctuation\">(<\/span><span class=\"token number\">\u06f3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span>\ntotal_area <span class=\"token operator\">=<\/span> calculate_total_area<span class=\"token punctuation\">(<\/span>shapes<span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>total_area<span class=\"token punctuation\">)<\/span>  <span class=\"token comment\"># Output: 37<\/span><\/code><\/pre>\n\n\n\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0641\u0648\u0642 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0628\u0647 \u0646\u0627\u0645 Shape \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0631\u0641\u062a\u0627\u0631 \u0645\u0634\u062a\u0631\u06a9 \u0647\u0645\u0647 \u0627\u0634\u06a9\u0627\u0644 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0645\u062a\u062f \u0627\u0646\u062a\u0632\u0627\u0639\u06cc area()\u200e \u0627\u0633\u062a \u06a9\u0647 \u0645\u0633\u0627\u062d\u062a \u06cc\u06a9 \u0634\u06a9\u0644 \u0631\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.\u0633\u067e\u0633 \u062f\u0648 \u06a9\u0644\u0627\u0633 \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645\u060c Rectangle \u0648 Square\u060c \u06a9\u0647 \u0627\u0632 Shape \u0628\u0647 \u0627\u0631\u062b \u0645\u06cc\u200c\u0628\u0631\u0646\u062f \u0648 \u0645\u062a\u062f area()\u200e \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0634\u06a9\u0644 \u062e\u0627\u0635 \u062e\u0648\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p>\u0646\u06a9\u062a\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0627\u0628\u0639calault_total_area()\u200e \u0642\u0627\u062f\u0631 \u0627\u0633\u062a \u0628\u0627 \u0647\u0631 \u0634\u06a9\u0644\u06cc\u060c \u062e\u0648\u0627\u0647 \u0645\u0633\u062a\u0637\u06cc\u0644 \u06cc\u0627 \u0645\u0631\u0628\u0639\u060c \u0628\u062f\u0648\u0646 \u062f\u0627\u0646\u0633\u062a\u0646 \u0646\u0648\u0639 \u062e\u0627\u0635\u06cc \u0627\u0632 \u0634\u06a9\u0644 \u06a9\u0627\u0631 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc Liskov \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0632\u06cc\u0631\u0627 \u0647\u0631 \u06a9\u0644\u0627\u0633 \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 (\u0645\u0633\u062a\u0637\u06cc\u0644 \u06cc\u0627 \u0645\u0631\u0628\u0639) \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u062f\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f. \u0628\u0627 \u067e\u0627\u06cc\u0628\u0646\u062f\u06cc \u0628\u0647 \u0627\u0635\u0644 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0644\u06cc\u0633\u06a9\u0648\u0641 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u062f \u0642\u0627\u0628\u0644 \u062a\u0648\u0633\u0639\u0647 \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u0633\u062a \u0648 \u0627\u0632 \u0631\u0641\u062a\u0627\u0631 \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0686\u0646\u062f\u0634\u06a9\u0644\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/h3>\n\n\n\n<p>\u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 (ISP) \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0686\u0646\u062f\u06cc\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631 \u0627\u0632 \u0686\u0646\u062f \u0631\u0627\u0628\u0637 \u0628\u0632\u0631\u06af\u200c\u062a\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0627\u06cc\u0646 \u0627\u0635\u0644 \u0628\u06cc\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0631\u0627\u0628\u0637\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u062e\u0627\u0635 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0628\u0627\u0634\u0646\u062f \u0648 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627 \u0646\u0628\u0627\u06cc\u062f \u0645\u062c\u0628\u0648\u0631 \u0634\u0648\u0646\u062f \u0645\u062a\u062f\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u0646\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc \u0634\u0631\u0648\u0639 \u0628\u0627 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0645\u0648\u062c\u0648\u062f \u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0645\u062a\u062f\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u060c \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc \u062e\u0627\u0635 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u0628\u0627\u06cc\u062f \u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u0648 \u062a\u0623\u06a9\u06cc\u062f \u0628\u0631 \u0627\u0631\u062b\u200c\u0628\u0631\u06cc \u0648 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0628\u0631 \u062c\u0641\u062a\u060c \u0637\u0631\u0627\u062d\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u062e\u0627\u0635 \u062f\u0633\u062a\u06af\u0627\u0647 \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u0628\u0647\u200c\u062c\u0627\u06cc \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0639\u0645\u0648\u0645\u06cc \u0648\u0627\u062d\u062f \u0637\u0631\u0627\u062d\u06cc \u06a9\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u0627\u0698\u0648\u0644\u0627\u0631 \u0628\u0648\u062f\u0646 \u0648 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0627\u0631\u062a\u0642\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637<\/h4>\n\n\n\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 \u0627\u0632 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span class=\"token keyword\">from<\/span> abc <span class=\"token keyword\">import<\/span> ABC<span class=\"token punctuation\">,<\/span> abstractmethod\n\n<span class=\"token comment\"># Bad Design: Large Interface<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Printer<\/span><span class=\"token punctuation\">(<\/span>ABC<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">scan<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">fax<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">SimplePrinter<\/span><span class=\"token punctuation\">(<\/span>Printer<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Printing: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>document<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">scan<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Scanning: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>document<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">fax<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token comment\"># Not supported by SimplePrinter<\/span>\n        <span class=\"token keyword\">raise<\/span> NotImplementedError<span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Faxing is not supported by this printer.\"<\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Good Design: Segregated Interfaces<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Printer<\/span><span class=\"token punctuation\">(<\/span>ABC<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Scanner<\/span><span class=\"token punctuation\">(<\/span>ABC<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">scan<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">FaxMachine<\/span><span class=\"token punctuation\">(<\/span>ABC<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">fax<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">SimplePrinter<\/span><span class=\"token punctuation\">(<\/span>Printer<span class=\"token punctuation\">,<\/span> Scanner<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Printing: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>document<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">scan<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> document<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Scanning: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>document<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Usage<\/span>\ndocument <span class=\"token operator\">=<\/span> <span class=\"token string\">\"Sample Document\"<\/span>\nprinter <span class=\"token operator\">=<\/span> SimplePrinter<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\nprinter<span class=\"token punctuation\">.<\/span><span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>document<span class=\"token punctuation\">)<\/span>\nprinter<span class=\"token punctuation\">.<\/span>scan<span class=\"token punctuation\">(<\/span>document<span class=\"token punctuation\">)<\/span><\/code><\/pre>\n\n\n\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0641\u0648\u0642\u060c \u0645\u0627 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0686\u0627\u067e\u06af\u0631 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 \u062f\u0627\u0634\u062a\u0646 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0628\u0632\u0631\u06af \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0645\u062a\u062f\u0647\u0627\u06cc \u0686\u0627\u067e (Print)\u060c \u0627\u0633\u06a9\u0646 &nbsp;(Scan)\u0648 \u0641\u06a9\u0633(Fax) &nbsp;\u0627\u0633\u062a\u060c \u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637 \u0631\u0627 \u0646\u0642\u0636 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0634\u06a9\u0644\u200c\u0633\u0627\u0632 \u0628\u0627\u0634\u062f \u0632\u06cc\u0631\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0645\u0647 \u0686\u0627\u067e\u06af\u0631\u0647\u0627 \u0627\u0632 \u0641\u06a9\u0633 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u06a9\u0646\u0646\u062f \u0648 \u0645\u062c\u0628\u0648\u0631 \u06a9\u0631\u062f\u0646 \u062a\u0645\u0627\u0645 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0686\u0627\u067e\u06af\u0631 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0631\u0648\u0634 \u0641\u06a9\u0633 \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<p>\u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u0628\u0646\u062f\u06cc \u0628\u0647 \u0627\u0635\u0644 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0631\u0627\u0628\u0637\u060c \u06a9\u062f \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u062a\u0627 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u200c\u0647\u0627 \u06cc\u0627 \u0647\u0645\u0627\u0646 \u0631\u0627\u0628\u0637\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631 \u0648 \u0648\u06cc\u0698\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a \u062a\u0641\u06a9\u06cc\u06a9 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u062c\u062f\u0627\u06af\u0627\u0646\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0686\u0627\u067e\u060c \u0627\u0633\u06a9\u0646 \u0648 \u0641\u06a9\u0633 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0686\u0627\u067e\u06af\u0631 SimplePrinter \u062a\u0639\u0631\u06cc\u0641 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u0686\u0627\u067e\u06af\u0631 \u0648 \u0627\u0633\u06a9\u0646\u0631 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0641\u0642\u0637 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062a\u062f\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0686\u0627\u067e \u0648 \u0627\u0633\u06a9\u0646 \u062f\u0627\u0631\u062f \u0648 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0645\u062a\u062f \u0641\u06a9\u0633 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0634\u062f\u0647 \u0646\u06cc\u0633\u062a. \u0628\u0627 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u200c\u0647\u0627\u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627 (\u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u06cc\u0627 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627) \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u0634\u0646\u062f \u0648 \u0627\u0632 \u0627\u062c\u0628\u0627\u0631 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0645\u062a\u062f\u0647\u0627\u06cc \u063a\u06cc\u0631\u0636\u0631\u0648\u0631\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0628\u0627\u0639\u062b \u062c\u062f\u0627\u0633\u0627\u0632\u06cc\u060c \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0647\u062a\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID<\/h3>\n\n\n\n<p>\u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc (DIP) \u0628\u0631 \u062c\u062f\u0627\u0633\u0627\u0632\u06cc \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u062a\u0645\u0631\u06a9\u0632 \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u0627\u0635\u0644 \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0628\u0631 \u0627\u06cc\u0646 \u0645\u0633\u0626\u0644\u0647 \u062a\u0623\u06a9\u06cc\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u0634\u0646\u062f. \u062f\u0631 \u0639\u0648\u0636\u060c \u0647\u0631 \u062f\u0648 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u0646\u062a\u0632\u0627\u0639\u0627\u062a \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0646\u062f. \u062f\u0631 \u0627\u0635\u0644 \u0627\u0646\u062a\u0632\u0627\u0639\u200c\u0647\u0627 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0627\u0634\u0646\u062f \u0648 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0627\u06cc\u062f \u0628\u0647 \u0627\u0646\u062a\u0632\u0627\u0639\u200c\u0647\u0627 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" width=\"800\" height=\"450\" data-src=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/1674656423828.png\" alt=\"\u0633\u0627\u0644\u06cc\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\" class=\"wp-image-31299 lazyload\" title=\"\" data-srcset=\"https:\/\/maktabkhooneh.org\/mag\/wp-content\/uploads\/2023\/06\/1674656423828.png 800w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/1674656423828-300x169.png.webp 300w, https:\/\/maktabkhooneh.org\/mag\/wp-content\/smush-webp\/2023\/06\/1674656423828-768x432.png.webp 768w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/450;\" \/><figcaption><\/figcaption><\/figure>\n\n\n\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u062f\u0627\u0648\u0644 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0635\u0644\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0627\u0633\u062a\u060c \u0627\u06af\u0631\u0686\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f. \u0628\u0627 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u0627\u0646\u062a\u0632\u0627\u0639\u0627\u062a \u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u06a9\u062f \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u062a\u0631\u060c \u0633\u0627\u0632\u06af\u0627\u0631\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644\u200c\u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc<\/h4>\n\n\n\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0645\u062b\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0627\u0632 \u0627\u0635\u0648\u0644 SOLID \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><span class=\"token keyword\">from<\/span> abc <span class=\"token keyword\">import<\/span> ABC<span class=\"token punctuation\">,<\/span> abstractmethod\n\n<span class=\"token comment\"># High-level Module<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">PaymentProcessor<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> payment_gateway<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>payment_gateway <span class=\"token operator\">=<\/span> payment_gateway\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">process_payment<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> amount<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>payment_gateway<span class=\"token punctuation\">.<\/span>pay<span class=\"token punctuation\">(<\/span>amount<span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Low-level Modules<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">PayPalGateway<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">pay<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> amount<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Processing payment of $<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>amount<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> via PayPal.\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">StripeGateway<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">pay<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> amount<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Processing payment of $<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>amount<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> via Stripe.\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token comment\"># Abstraction\/Interface<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">PaymentGateway<\/span><span class=\"token punctuation\">(<\/span>ABC<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token decorator annotation punctuation\">@abstractmethod<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">pay<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> amount<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">pass<\/span>\n\n<span class=\"token comment\"># Dependency Injection<\/span>\npaypal_gateway <span class=\"token operator\">=<\/span> PayPalGateway<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\npayment_processor <span class=\"token operator\">=<\/span> PaymentProcessor<span class=\"token punctuation\">(<\/span>paypal_gateway<span class=\"token punctuation\">)<\/span>\npayment_processor<span class=\"token punctuation\">.<\/span>process_payment<span class=\"token punctuation\">(<\/span><span class=\"token number\">\u06f1\u06f0\u06f0<\/span><span class=\"token punctuation\">)<\/span>\n\nstripe_gateway <span class=\"token operator\">=<\/span> StripeGateway<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\npayment_processor <span class=\"token operator\">=<\/span> PaymentProcessor<span class=\"token punctuation\">(<\/span>stripe_gateway<span class=\"token punctuation\">)<\/span>\npayment_processor<span class=\"token punctuation\">.<\/span>process_payment<span class=\"token punctuation\">(<\/span><span class=\"token number\">\u06f2\u06f0\u06f0<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n\n\n\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0641\u0648\u0642 \u0645\u0627 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0628\u0647 \u0646\u0627\u0645 PaymentProcessor \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0648\u0638\u06cc\u0641\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u0631\u062f\u0627\u062e\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 paypal_gateway \u062f\u0627\u0631\u062f\u060c \u06a9\u0647 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0633\u0626\u0648\u0644 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u0631\u062f\u0627\u062e\u062a \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<p>\u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u0628\u0646\u062f\u06cc \u0628\u0647 \u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u060c \u06cc\u06a9 \u0627\u0646\u062a\u0632\u0627\u0639 \u06cc\u0627 \u0631\u0627\u0628\u0637 \u0628\u0647 \u0646\u0627\u0645 PaymentGateway \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0627\u0646\u062a\u0632\u0627\u0639 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062f\u0631\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a \u0631\u0627 \u0628\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0646 \u0631\u0648\u0634 \u067e\u0631\u062f\u0627\u062e\u062a \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646\u060c PayPalGateway \u0648 StripeGateway\u060c \u0631\u0627\u0628\u0637 PaymentGateway \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u0634\u062e\u0635\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0648\u0634 \u067e\u0631\u062f\u0627\u062e\u062a \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0631\u0648\u0627\u0632\u0647 \u067e\u0631\u062f\u0627\u062e\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.<\/p>\n\n\n\n<p>\u06a9\u0644\u0627\u0633 PaymentProcessor \u0628\u0647\u200c\u062c\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0634\u062e\u0635 \u0628\u0647 PaymentGateway \u0627\u0646\u062a\u0632\u0627\u0639\u06cc \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 PaymentGateway \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0631 \u0633\u0627\u0632\u0646\u062f\u0647 \u062e\u0648\u062f \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0628\u0647 \u0627\u0646\u062a\u0632\u0627\u0639\u0627\u062a (\u0631\u0627\u0628\u0637 PaymentGateway) \u0628\u0647\u200c\u062c\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u062e\u0627\u0635 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c PayPalGateway \u06cc\u0627 StripeGateway) \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<p>\u0628\u0627 \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u0635\u0644 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0631 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\u060c \u0645\u0627 \u0628\u0647 \u0627\u062a\u0635\u0627\u0644 \u0634\u0644\u06cc \u0628\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0648 \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u062f\u0633\u062a \u0645\u06cc\u200c\u06cc\u0627\u0628\u06cc\u0645. \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u0628\u0633\u062a\u06af\u06cc \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0644\u06a9\u0647 \u0628\u0647 \u0627\u0646\u062a\u0632\u0627\u0639 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f \u0648 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc\u060c \u0645\u0627\u0698\u0648\u0644\u0627\u0631 \u0628\u0648\u062f\u0646 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06cc\u0627 \u062a\u0639\u0648\u06cc\u0636 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u0641\u0648\u0642\u060c \u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 PaymentProcessor \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u062f\u0631\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u067e\u0631\u062f\u0627\u062e\u062a \u0645\u062e\u062a\u0644\u0641 (PayPal \u06cc\u0627 Stripe) \u0628\u0627 \u062a\u0632\u0631\u06cc\u0642 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0631\u0648\u0627\u0632\u0647 \u0645\u0646\u0627\u0633\u0628 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u06a9\u0627\u0631 \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u0628\u0627\u0644\u0627 \u0628\u0647 \u0627\u0646\u062a\u0632\u0627\u0639\u200c\u0647\u0627 \u0648 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u067e\u0627\u06cc\u06cc\u0646 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0627\u0646\u062a\u0632\u0627\u0639\u200c\u0647\u0627 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u062e\u0646 \u067e\u0627\u06cc\u0627\u0646\u06cc<\/h2>\n\n\n\n<p>\u0627\u062c\u0631\u0627\u06cc \u0627\u0635\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc SOLID \u062f\u0631 \u0637\u0648\u0644 \u062a\u0648\u0633\u0639\u0647 \u0645\u0646\u062c\u0631 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc\u060c \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u062a\u0631\u060c \u0622\u0632\u0645\u0627\u06cc\u0634\u200c\u067e\u0630\u06cc\u0631\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644\u200c\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0635\u0648\u0644 \u0628\u0647 \u0637\u0648\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u062a\u0648\u0633\u0637 \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u062c\u0647\u0627\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u062f \u0628\u0627 \u06a9\u06cc\u0641\u06cc\u062a \u0628\u0627\u0644\u0627 \u06a9\u0647 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u0635\u0646\u0639\u062a \u0627\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0627 \u067e\u0627\u06cc\u0628\u0646\u062f\u06cc \u0628\u0647 \u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\u060c \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u0646\u062f \u06a9\u0647 \u06a9\u062f \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u06cc\u0627\u0641\u062a\u0647\u060c \u0633\u0627\u0632\u06af\u0627\u0631 \u0648 \u0642\u0627\u062f\u0631 \u0628\u0647 \u0645\u0642\u0627\u0648\u0645\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648 \u067e\u06cc\u0634\u0631\u0641\u062a\u200c\u0647\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0632\u0645\u0627\u0646 \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0622\u0645\u0648\u0632\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0628\u0627 \u0645\u06a9\u062a\u0628 \u062e\u0648\u0646\u0647<\/h3>\n\n\n\n<p>\u0627\u06af\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u062a\u062f\u06cc \u0647\u0633\u062a\u06cc\u062f \u0648 \u06cc\u0627 \u0627\u06af\u0631 \u0647\u06cc\u0686 \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0646\u062f\u0627\u0631\u06cc\u062f \u0646\u06af\u0631\u0627\u0646 \u0646\u0628\u0627\u0634\u06cc\u062f \u0628\u0627 \u0645\u06a9\u062a\u0628 \u062e\u0648\u0646\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0627\u0632 \u0622\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0641\u06a9\u0631\u0634 \u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0645\u06a9\u062a\u0628 \u062e\u0648\u0646\u0647 \u0627\u0646\u0648\u0627\u0639 \u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0628\u0631\u0627\u06cc \u0632\u0628\u0627\u0646\u200c \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062a\u0631\u0646\u062f\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\u060c \u0627\u0646\u0648\u0627\u0639 \u062f\u0648\u0631\u0647 \u0622\u0645\u0648\u0632\u0634 \u0627\u0632 \u067e\u0627\u06cc\u0647 \u062a\u0627 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0631\u0627 \u0627\u0632 \u0635\u0641\u0631 \u062a\u0627 \u0635\u062f \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0622\u0645\u0648\u0632\u0634 \u062f\u0627\u062f\u0647 \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0645\u0639\u062a\u0628\u0631\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06af\u0631 \u0628\u0647 \u0641\u06a9\u0631 \u0648\u0631\u0648\u062f \u0628\u0647 \u062f\u0646\u06cc\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0647\u0633\u062a\u06cc\u062f \u0648 \u06cc\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0645\u0647\u0627\u0631\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f \u0647\u0645\u200c\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 <a href=\"https:\/\/maktabkhooneh.org\/learn\/programming\/\">\u0622\u0645\u0648\u0632\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/a>&nbsp;\u0645\u06a9\u062a\u0628 \u062e\u0648\u0646\u0647 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627\u0634\u06cc\u062f \u0648 \u0627\u0632 \u0646\u062a\u0627\u06cc\u062c \u0622\u0646 \u0634\u06af\u0641\u062a\u200c\u0632\u062f\u0647 \u0634\u0648\u06cc\u062f.<\/p>\n\n\n\n<p>\u0645\u0646\u0628\u0639 \u0645\u0642\u0627\u0644\u0647:<a href=\"https:\/\/www.freecodecamp.org\/news\/solid-principles-explained-in-plain-english\/\" rel=\"nofollow noopener\" target=\"_blank\">FreeCodeCamp <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0635\u0648\u0644 SOLID \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u067e\u0646\u062c \u0627\u0635\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0637\u0631\u0627\u062d\u06cc \u06a9\u0644\u0627\u0633 \u0634\u06cc \u06af\u0631\u0627 (Object Oriented) \u0631\u0627 \u0647\u062f\u0627\u06cc\u062a \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u062e\u0648\u0628 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0648 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0631\u0627 \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0622\u0646\u200c\u0647\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u0627\u0633 \u0642\u0648\u06cc \u0648 \u0642\u0627\u0628\u0644 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u0627\u0632 \u0645\u06a9\u062a\u0648\u0628\u060c \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0627\u0635\u0648\u0644 \u0633\u0627\u0644\u06cc\u062f (solid [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":31294,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-31293","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-and-it-training"],"_links":{"self":[{"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/posts\/31293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/comments?post=31293"}],"version-history":[{"count":3,"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/posts\/31293\/revisions"}],"predecessor-version":[{"id":66104,"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/posts\/31293\/revisions\/66104"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/media\/31294"}],"wp:attachment":[{"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/media?parent=31293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/categories?post=31293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maktabkhooneh.org\/mag\/wp-json\/wp\/v2\/tags?post=31293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}