{"id":206,"date":"2024-07-08T17:48:07","date_gmt":"2024-07-08T14:48:07","guid":{"rendered":"https:\/\/hernan-yehuda.net\/?p=206"},"modified":"2024-07-08T17:48:08","modified_gmt":"2024-07-08T14:48:08","slug":"%d7%a2%d7%a7%d7%a8%d7%95%d7%a0%d7%95%d7%aa-solid-%d7%91%d7%aa%d7%9b%d7%a0%d7%95%d7%aa-%d7%9e%d7%95%d7%a0%d7%97%d7%94-%d7%a2%d7%a6%d7%9e%d7%99%d7%9d","status":"publish","type":"post","link":"https:\/\/hernan-yehuda.net\/?p=206","title":{"rendered":"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd"},"content":{"rendered":"\n<p>\u05e8\u05d5\u05d1\u05e8\u05d8 \u05de\u05e8\u05d8\u05d9\u05df (\u05d4\u05de\u05d5\u05db\u05e8 \u05d2\u05dd \u05db- Uncle Bob), \u05d4\u05d0\u05d9\u05e9 \u05e9\u05d4\u05d1\u05d9\u05d0 \u05dc\u05e0\u05d5 \u05d0\u05ea <a href=\"https:\/\/hernan-yehuda.net\/?p=40\">Clean Code<\/a>, \u05d4\u05d2\u05d3\u05d9\u05e8 \u05d1\u05de\u05d0\u05de\u05e8\u05d9\u05d5 \u05d5\u05d1\u05e1\u05e4\u05e8\u05d9\u05d5 \u05d7\u05de\u05d9\u05e9\u05d4 \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e0\u05d5\u05e2\u05d3\u05d5 \u05dc\u05e9\u05e4\u05e8 \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05e9\u05dc \u05de\u05e2\u05e8\u05db\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05de\u05d5\u05e0\u05d7\u05d5\u05ea \u05e2\u05e6\u05de\u05d9\u05dd \u2013 OOP. \u05d7\u05de\u05e9\u05ea \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4\u05d0\u05dc\u05d5 \u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05d9\u05e6\u05d5\u05e8 \u05ea\u05d5\u05db\u05e0\u05d4 \u05e7\u05dc\u05d4 \u05dc\u05d4\u05d1\u05e0\u05d4, \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4.<\/p>\n\n\n\n<p>\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d0\u05dc\u05d5 \u05e0\u05d5\u05d3\u05e2\u05d5 \u05d1\u05e8\u05d0\u05e9\u05d9 \u05d4\u05ea\u05d9\u05d1\u05d5\u05ea: SOLID \u05d5\u05d4\u05dd:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Single Responsibility Principle (SRP)<\/li>\n\n\n\n<li>Open\/Closed Principle (OCP)<\/li>\n\n\n\n<li>Liskov Substitution Principle (LSP)<\/li>\n\n\n\n<li>Interface Segregation Principle (ISP)<\/li>\n\n\n\n<li>Dependency Inversion Principle (DIP)<\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<p>________________________________________________________________________________________________________________<\/p>\n\n\n\n<p><strong>Single Responsibility Principle (SRP)<\/strong><\/p>\n\n\n\n<p>\u05d9\u05e9 \u05d0\u05d5\u05de\u05e8\u05d9\u05dd \u05e9\u05d2\u05d1\u05e8\u05d9\u05dd \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc\u05d9\u05dd \u05dc\u05d8\u05e4\u05dc \u05d1\u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d1\u05e8 \u05d0\u05d7\u05d3 \u05d1\u05db\u05dc \u05e4\u05e2\u05dd. \u05dc\u05d0 \u05d9\u05d5\u05d3\u05e2 \u05e2\u05d3 \u05db\u05de\u05d4 \u05d6\u05d4 \u05e0\u05db\u05d5\u05df, \u05d0\u05d1\u05dc \u05d1\u05db\u05ea\u05d9\u05d1\u05ea \u05e7\u05d5\u05d3, \u05d0\u05db\u05df \u05de\u05d5\u05de\u05dc\u05e5 \u05e9\u05dc\u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05ea\u05d4\u05d9\u05d4 \u05d0\u05d7\u05e8\u05d9\u05d5\u05ea \u05d0\u05d7\u05ea \u05d1\u05dc\u05d1\u05d3. \u05db\u05dc\u05d5\u05de\u05e8, \u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05e6\u05e8\u05d9\u05db\u05d4 \u05dc\u05d8\u05e4\u05dc \u05d1\u05d4\u05d9\u05d1\u05d8 \u05d0\u05d7\u05d3 \u05d1\u05dc\u05d1\u05d3 \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05dc\u05d0 \u05d9\u05d5\u05ea\u05e8 \u05de\u05db\u05da.<\/p>\n\n\n\n<p>\u05dc\u05d3\u05d5\u05d2\u05de\u05d0:<\/p>\n\n\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic class Invoice\n{\n    public void CalculateTotal() \n    {\n        \/\/ Logic for calculating total amount\n    }\n}\n\npublic class InvoicePrinter\n{\n    public void Print(Invoice invoice)\n    {\n        \/\/ Logic for printing the invoice\n    }\n}\n\n<\/pre>\n\n\n\n<p>\u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05de\u05d7\u05dc\u05e7\u05ea `Invoice` \u05de\u05d8\u05e4\u05dc\u05ea \u05e8\u05e7 \u05d1\u05d7\u05d9\u05e9\u05d5\u05d1 \u05d4\u05e1\u05db\u05d5\u05dd \u05d4\u05db\u05d5\u05dc\u05dc, \u05d1\u05e2\u05d5\u05d3 \u05e9-`InvoicePrinter` \u05de\u05d8\u05e4\u05dc\u05ea \u05d1\u05d4\u05d3\u05e4\u05e1\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05e0\u05d9\u05ea.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">\u05d8\u05d9\u05e4<\/span><\/strong>: \u05d0\u05dd \u05d4\u05de\u05d9\u05dc\u05d4 <strong>And<\/strong> \u05de\u05d5\u05e4\u05d9\u05e2\u05d4 \u05d1\u05e9\u05dd \u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd, \u05d6\u05d5 \u05db\u05e0\u05e8\u05d0\u05d4 \u05d0\u05d9\u05e0\u05d3\u05d9\u05e7\u05e6\u05d9\u05d4 \u05dc\u05db\u05da \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd \u05de\u05e4\u05e8\u05d4 \u05d0\u05ea SRP.<\/p>\n\n\n\n<p><strong>\u05d5\u05d2\u05dd<\/strong> &#8211; \u05db\u05d0\u05e9\u05e8 \u05e7\u05e9\u05d4 \u05dc\u05d4\u05d1\u05d9\u05df \u05de\u05d4 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05de\u05d7\u05dc\u05e7\u05d4 \u05de\u05e1\u05d5\u05d9\u05de\u05ea \u05e2\u05d5\u05e9\u05d4, \u05d0\u05d5 \u05e9\u05e7\u05e9\u05d4 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d1\u05dc\u05d9 \u05dc\u05e4\u05d2\u05d5\u05e2 \u05d1\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05e9\u05dc \u05d4\u05de\u05d7\u05dc\u05e7\u05d4, \u05d9\u05e9 \u05e1\u05d9\u05db\u05d5\u05d9 \u05dc\u05d0 \u05e7\u05d8\u05df \u05e9\u05e4\u05d2\u05e9\u05ea\u05dd \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc SRP.<\/p>\n\n\n\n<p><strong>Open\/Closed Principle (OCP)<\/strong><\/p>\n\n\n\n<p>\u05db\u05d9\u05d3\u05d5\u05e2, \u05db\u05dc \u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d4\u05d9\u05d0 \u05d1\u05e1\u05d9\u05e1 \u05dc\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd. \u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05e6\u05d1\u05d0 \u05d5\u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05ea\u05d5\u05db\u05e0\u05d4. \u05d1\u05ea\u05db\u05e0\u05d5\u05df \u05d8\u05d5\u05d1 \u05e0\u05d5\u05db\u05dc \u05dc\u05d3\u05d0\u05d5\u05d2 \u05dc\u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05d9\u05d4\u05d9\u05d4 \u05dc\u05d4\u05e8\u05d7\u05d9\u05d1 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d4\u05d5\u05e1\u05e4\u05ea \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05d7\u05d3\u05e9\u05d4 \u05e2\u05dc \u05e4\u05d9 \u05d4\u05e6\u05e8\u05db\u05d9\u05dd \u05d4\u05e2\u05ea\u05d9\u05d3\u05d9\u05d9\u05dd, \u05d0\u05da \u05dc\u05e2\u05e9\u05d5\u05ea \u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05e9\u05e0\u05e6\u05d8\u05e8\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd.<\/p>\n\n\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic abstract class Shape\n{\n    public abstract double Area();\n}\n\npublic class Rectangle : Shape\n{\n    public double Width { get; set; }\n    public double Height { get; set; }\n\n    public override double Area()\n    {\n        return Width * Height;\n    }\n}\n\npublic class Circle : Shape\n{\n    public double Radius { get; set; }\n\n    public override double Area()\n    {\n        return Math.PI * Radius * Radius;\n    }\n}\n\n\n<\/pre>\n\n\n\n<p>\u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05e6\u05d5\u05e8\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d9\u05e6\u05d9\u05e8\u05ea \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d4\u05d9\u05d5\u05e8\u05e9\u05d5\u05ea \u05de-`Shape` \u05d5\u05de\u05d9\u05d9\u05e9\u05de\u05d5\u05ea \u05d0\u05ea \u05d4\u05e9\u05d9\u05d8\u05d4 `Area`.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">\u05d8\u05d9\u05e4<\/span><\/strong>: \u05d0\u05dd \u05d1\u05db\u05dc \u05e4\u05e2\u05dd \u05e9\u05d0\u05ea\u05d4 \u05de\u05d5\u05e1\u05d9\u05e3 \u05ea\u05db\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05d0\u05ea\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd \u05d1\u05d0\u05d5\u05e4\u05df \u05de\u05e9\u05de\u05e2\u05d5\u05ea\u05d9, \u05e1\u05d1\u05d9\u05e8 \u05dc\u05d4\u05e0\u05d9\u05d7 \u05e9\u05d0\u05ea\u05d4 \u05de\u05e4\u05e8 \u05d0\u05ea OCP.<\/p>\n\n\n\n<p><strong>\u05d5\u05d2\u05dd<\/strong> \u2013 \u05d0\u05dd \u05d0\u05ea\u05d4 \u05e8\u05d5\u05d0\u05d4 \u05ea\u05dc\u05d5\u05ea \u05d9\u05e9\u05d9\u05e8\u05d4 \u05d1\u05d9\u05df \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05db\u05da \u05e9\u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d4 \u05d0\u05d7\u05ea \u05de\u05d7\u05d9\u05d9\u05d1 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d9\u05e9 \u05e4\u05d4 \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc OCP.<\/p>\n\n\n\n<p><strong>Liskov Substitution Principle (LSP)<\/strong><\/p>\n\n\n\n<p>\u05d1\u05e8\u05d1\u05e8\u05d4 \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (Barbara Liskov) \u05d4\u05d9\u05d0 \u05de\u05d3\u05e2\u05e0\u05d9\u05ea \u05de\u05d7\u05e9\u05d1 \u05d0\u05de\u05e8\u05d9\u05e7\u05d0\u05d9\u05ea, \u05d0\u05d7\u05ea \u05d4\u05d3\u05de\u05d5\u05d9\u05d5\u05ea \u05d4\u05de\u05e9\u05e4\u05d9\u05e2\u05d5\u05ea \u05d1\u05d9\u05d5\u05ea\u05e8 \u05d1\u05ea\u05d7\u05d5\u05dd \u05de\u05d3\u05e2\u05d9 \u05d4\u05de\u05d7\u05e9\u05d1 \u05d5\u05d4\u05e0\u05d3\u05e1\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05d6\u05d5\u05db\u05ea \u05e4\u05e8\u05e1 \u05d8\u05d9\u05d5\u05e8\u05d9\u05e0\u05d2 \u05d1\u05e9\u05e0\u05ea 2008 .<\/p>\n\n\n\n<p>\u05dc\u05e6\u05d9\u05d1\u05d5\u05e8 \u05d4\u05de\u05ea\u05db\u05e0\u05ea\u05d9\u05dd \u05d4\u05d9\u05d0 \u05d9\u05d3\u05d5\u05e2\u05d4 \u05d1\u05e2\u05d9\u05e7\u05e8 \u05de\u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05e0\u05e7\u05e8\u05d0 \u05e2\u05dc \u05e9\u05de\u05d4. \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e1\u05d9\u05e1 \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05d1\u05e2\u05dc\u05d5\u05ea \u05d9\u05db\u05d5\u05dc\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d7\u05dc\u05e4\u05d5\u05ea \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d4\u05e0\u05d2\u05d6\u05e8\u05d5\u05ea \u05de\u05d4\u05df, \u05d5\u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05dc\u05e9\u05d1\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4.<\/p>\n\n\n\n<p>\u05d3\u05d5\u05d2\u05de\u05d0:<\/p>\n\n\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic class Bird\n{\n    public virtual void Fly()\n    {\n        \/\/ Birds can fly\n    }\n}\n\npublic class Ostrich : Bird\n{\n    public override void Fly()\n    {\n        throw new InvalidOperationException(&quot;Ostriches can't fly&quot;);\n    }\n}\n<\/pre>\n\n\n\n<p>\u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 \u05d0\u05e0\u05d7\u05e0\u05d5 &#8220;\u05db\u05d5\u05e4\u05d9\u05dd&#8221; \u05e2\u05dc \u05d9\u05e2\u05e0\u05d9\u05dd \u05dc\u05e2\u05d5\u05e3&#8230; \u05d2\u05dd \u05d0\u05dd \u05e0\u05d8\u05de\u05d5\u05df \u05d0\u05ea \u05d4\u05e8\u05d0\u05e9 \u05d1\u05d7\u05d5\u05dc, \u05d6\u05d4 \u05dc\u05d0 \u05d9\u05e2\u05d1\u05d5\u05d3. \u05ea\u05d4\u05d9\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4. \u05d5\u05dc\u05db\u05df, \u05db\u05d3\u05d9 \u05dc\u05d4\u05d9\u05de\u05e0\u05e2 \u05de\u05e9\u05d1\u05d9\u05e8\u05ea LSP, \u05d9\u05e9 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05db\u05da \u05e9\u05de\u05d7\u05dc\u05e7\u05ea `Ostrich` \u05dc\u05d0 \u05ea\u05d9\u05e8\u05e9 \u05de-`Bird`, \u05d0\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05d0\u05d9\u05e0\u05d4 \u05d4\u05d2\u05d9\u05d5\u05e0\u05d9\u05ea.<\/p>\n\n\n\n<p>\u05db\u05d3\u05d9 \u05dc\u05ea\u05e7\u05df \u05d0\u05ea \u05d4\u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05db\u05da \u05e9\u05e0\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05e2\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05dc \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (LSP), &nbsp;\u05e0\u05d1\u05e6\u05e2 \u05d0\u05ea \u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d4\u05d1\u05d0\u05d9\u05dd:<\/p>\n\n\n\n<p>\u05d1\u05de\u05e7\u05d5\u05dd \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 Ostrich \u00a0\u05ea\u05d9\u05e8\u05e9 \u05de-Bird \u05e0\u05d9\u05e6\u05d5\u05e8 \u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05e9\u05d1\u05d4 \u05dc\u05db\u05dc \u05d4\u05e6\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd \u05d9\u05e9 \u05e4\u05e2\u05d5\u05dc\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea \u05e9\u05dc Move \u00a0\u00a0\u05d1\u05de\u05e7\u05d5\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05ea \u05e9\u05dc Fly. \u05db\u05dc \u05e6\u05d9\u05e4\u05d5\u05e8 \u05ea\u05d9\u05d9\u05e9\u05dd \u05d0\u05ea \u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d4\u05d6\u05d5 \u05d1\u05d3\u05e8\u05db\u05d4 \u05e9\u05dc\u05d4.<\/p>\n\n\n\n<p>\u05d4\u05e0\u05d4 \u05d3\u05d5\u05d2\u05de\u05d0 \u05dc\u05e7\u05d5\u05d3 \u05de\u05ea\u05d5\u05e7\u05df:<\/p>\n\n\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic abstract class Bird\n{\n    public abstract void Move();\n}\n\npublic class FlyingBird : Bird\n{\n    public override void Move()\n    {\n        Console.WriteLine(&quot;Flying&quot;);\n    }\n}\n\npublic class Ostrich : Bird\n{\n    public override void Move()\n    {\n        Console.WriteLine(&quot;Running&quot;);\n    }\n}\n<\/pre>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">\u05d8\u05d9\u05e4<\/span><\/strong>: \u05d0\u05dd \u05d4\u05e7\u05d5\u05d3 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05ea\u05e0\u05d0\u05d9\u05dd \u05dc\u05d1\u05d3\u05d9\u05e7\u05ea \u05e1\u05d5\u05d2 \u05d4\u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05d7\u05dc\u05d9\u05d8 \u05dc\u05d0\u05d9\u05d6\u05d4 \u05de\u05ea\u05d5\u05d3\u05d4 \u05dc\u05e7\u05e8\u05d5\u05d0, \u05e7\u05e8\u05d5\u05d1 \u05dc\u05d5\u05d5\u05d3\u05d0\u05d9 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea LSP.<\/p>\n\n\n\n<p><strong>Interface Segregation Principle (ISP)<\/strong><\/p>\n\n\n\n<p>\u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05d9\u05e9 \u05dc\u05e4\u05e6\u05dc \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05d2\u05d3\u05d5\u05dc\u05d9\u05dd \u05dc\u05de\u05e1\u05e4\u05e8 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05e7\u05d8\u05e0\u05d9\u05dd \u05d5\u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05d9\u05dd, \u05db\u05da \u05e9\u05d4-client &nbsp;\u05dc\u05d0 \u05d9\u05d4\u05d9\u05d4 \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d9\u05d9\u05e9\u05dd \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05e9\u05d0\u05d9\u05e0\u05df \u05e0\u05d3\u05e8\u05e9\u05d5\u05ea \u05dc\u05d5.<\/p>\n\n\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic interface IPrinter\n{\n    void Print();\n}\n\npublic interface IScanner\n{\n    void Scan();\n}\n\npublic class MultiFunctionPrinter : IPrinter, IScanner\n{\n    public void Print()\n    {\n        \/\/ Print logic\n    }\n\n    public void Scan()\n    {\n        \/\/ Scan logic\n    }\n}\n\npublic class SimplePrinter : IPrinter\n{\n    public void Print()\n    {\n        \/\/ Print logic\n    }\n}\n\n\n<\/pre>\n\n\n\n<p>\u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 &nbsp;`SimplePrinter` \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05e8\u05e7 \u05d0\u05ea `IPrinter`.<\/p>\n\n\n\n<p><strong>\u05d8\u05d9\u05e4<\/strong>: \u05d0\u05dd \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d9 \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05db\u05da \u05e9\u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05e9\u05de\u05d9\u05d9\u05e9\u05de\u05d9\u05dd \u05d0\u05d5\u05ea\u05d5 \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05d1\u05d9\u05df \u05d4\u05e9\u05d0\u05e8 \u05d2\u05dd \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05e9\u05e0\u05d5\u05ea\u05e8\u05d5\u05ea \u05dc\u05dc\u05d0 \u05e9\u05d9\u05de\u05d5\u05e9 \u2013 \u05db\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea ISP.<\/p>\n\n\n\n<p><strong>Dependency Inversion Principle (DIP)<\/strong><\/p>\n\n\n\n<p>\u05d4\u05e8\u05d1\u05d4 \u05de\u05d3\u05d1\u05e8\u05d9\u05dd \u05e2\u05dc \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea \u05d1\u05de\u05d3\u05d9\u05e0\u05d4, \u05d0\u05d1\u05dc \u05d2\u05dd \u05d1\u05e7\u05d5\u05d3 \u05d6\u05d4 \u05db\u05db\u05d4. \u05db\u05d3\u05d9 \u05e9\u05e7\u05d5\u05d3 \u05d9\u05d4\u05d9\u05d4 \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05e9\u05de\u05e8 \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea. \u05d7\u05dc\u05e7\u05d9 \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e6\u05e8\u05d9\u05db\u05d9\u05dd \u05dc\u05d4\u05d9\u05d5\u05ea \u05db\u05de\u05d4 \u05e9\u05e4\u05d7\u05d5\u05ea \u05e6\u05de\u05d5\u05d3\u05d9\u05dd (coupled) \u05d0\u05d7\u05d3 \u05dc\u05e9\u05e0\u05d9. \u05d0\u05d7\u05d3 \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05e0\u05d5 \u05d1\u05d6\u05d4 \u05d4\u05d5\u05d0 Dependecy Inversion Principle, \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d9\u05e4\u05d5\u05da \u05d4\u05ea\u05dc\u05d5\u05ea.<\/p>\n\n\n\n<p><strong>\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4<\/strong><strong>-DIP<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li><strong>\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e8\u05de\u05d4 \u05d2\u05d1\u05d5\u05d4\u05d4 \u05dc\u05d0 \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05ea\u05dc\u05d5\u05d9\u05d5\u05ea \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e8\u05de\u05d4 \u05e0\u05de\u05d5\u05db\u05d4<\/strong>: \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05e9\u05de\u05db\u05d9\u05dc\u05d5\u05ea \u05dc\u05d5\u05d2\u05d9\u05e7\u05d4 \u05e2\u05e1\u05e7\u05d9\u05ea \u05de\u05e8\u05db\u05d6\u05d9\u05ea \u05dc\u05d0 \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05ea\u05dc\u05d5\u05d9\u05d5\u05ea \u05d1\u05e4\u05e8\u05d8\u05d9\u05dd \u05e9\u05dc \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05e9\u05de\u05de\u05de\u05e9\u05d5\u05ea \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05ea.<\/li>\n\n\n\n<li><strong>\u05e9\u05ea\u05d9\u05d4\u05df \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05ea\u05dc\u05d5\u05d9\u05d5\u05ea \u05d1\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd: <\/strong>\u05d4\u05df \u05d4\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e8\u05de\u05d4 \u05d4\u05d2\u05d1\u05d5\u05d4\u05d4 \u05d5\u05d4\u05df \u05d4\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e8\u05de\u05d4 \u05d4\u05e0\u05de\u05d5\u05db\u05d4 \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05ea\u05dc\u05d5\u05d9\u05d5\u05ea \u05d1\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd (\u05d0\u05d5 \u05d1 abstract class) \u05d1\u05de\u05e7\u05d5\u05dd \u05d1\u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e7\u05d5\u05e0\u05e7\u05e8\u05d8\u05d9\u05d9\u05dd.<\/li>\n<\/ol>\n\n\n\n<p>\u05d0\u05dd \u05dc\u05de\u05e9\u05dc \u05d9\u05d4\u05d9\u05d4 \u05dc\u05e0\u05d5 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc \u05dc\u05d5\u05d2\u05d9\u05dd \u05d5\u05db\u05de\u05d4 \u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd \u05e9\u05dc\u05d5 \u05d1\u05d0\u05d5\u05e4\u05df \u05d4\u05d6\u05d4:<\/p>\n\n\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic interface ILogger\n{\n    void Log(string message);\n}\n\npublic class FileLogger : ILogger\n{\n    public void Log(string message)\n    {\n        \/\/ Log to file\n    }\n}\n\npublic class DatabaseLogger : ILogger\n{\n    public void Log(string message)\n    {\n        \/\/ Log to database\n    }\n}\n\n<\/pre>\n\n\n\n<p>\u05e0\u05d5\u05db\u05dc \u05d1\u05e7\u05dc\u05d9\u05d9\u05e0\u05d8 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d0\u05d9\u05d6\u05d4 \u05de\u05d9\u05de\u05d5\u05e9 \u05e9\u05e0\u05e8\u05e6\u05d4 \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05d4\u05d5\u05d0 \u05de\u05e7\u05d1\u05dc \u05d1\u05e7\u05d5\u05e0\u05e1\u05d8\u05e8\u05e7\u05d8\u05d5\u05e8 \u05e9\u05dc\u05d5 \u05d0\u05ea \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1<\/p>\n\n\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic class UserService\n{\n    private readonly ILogger _logger;\n\n    public UserService(ILogger logger)\n    {\n        _logger = logger;\n    }\n\n    public void CreateUser(string username)\n    {\n        \/\/ Create user logic\n        _logger.Log(&quot;User created&quot;);\n    }\n}\n\n<\/pre>\n\n\n\n<p>\u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, `UserService` \u05dc\u05d0 \u05ea\u05dc\u05d5\u05d9 \u05d1\u05d9\u05d9\u05e9\u05d5\u05dd \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9 \u05e9\u05dc `ILogger` \u05d0\u05dc\u05d0 \u05d1\u05de\u05de\u05e9\u05e7, \u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d7\u05dc\u05d9\u05e3 \u05d0\u05ea \u05d4\u05dc\u05d5\u05d2\u05e8\u05d9\u05dd \u05dc\u05dc\u05d0 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e7\u05d5\u05d3 \u05e9\u05dc `UserService`.<\/p>\n\n\n\n<p><strong><span style=\"text-decoration: underline;\">\u05d8\u05d9\u05e4<\/span><\/strong>: \u05d0\u05dd \u05e7\u05e9\u05d4 \u05dc\u05db\u05dd \u05dc\u05db\u05ea\u05d5\u05d1 \u05d8\u05e1\u05d8\u05d9\u05dd \u05dc\u05e7\u05dc\u05d0\u05e1 \u05d0\u05d5 \u05dc\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d4 \u05d1\u05d2\u05dc\u05dc \u05e9\u05d4\u05d9\u05d0 \u05ea\u05dc\u05d5\u05d9\u05d4 \u05d1\u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e7\u05d5\u05e0\u05e7\u05e8\u05d8\u05d9\u05d9\u05dd \u05e9\u05dc \u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd, \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea DIP.<\/p>\n\n\n\n<p>_______________________________________________________________________________________________________________<\/p>\n\n\n\n<p>\u05d6\u05d5\u05d4\u05d9 \u05d8\u05e2\u05d9\u05de\u05d4 \u05e2\u05dc \u05e7\u05e6\u05d4 \u05d4\u05de\u05d6\u05dc\u05d2 \u05e9\u05dc \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID. \u05de\u05d9 \u05e9\u05d9\u05e7\u05e4\u05d9\u05d3 \u05e2\u05dc\u05d9\u05d4\u05dd \u05d1\u05d6\u05de\u05df \u05db\u05ea\u05d9\u05d1\u05ea \u05d4\u05e7\u05d5\u05d3, \u05d9\u05e8\u05d5\u05d5\u05d9\u05d7 <a href=\"https:\/\/hernan-yehuda.net\/?p=40\">\u05e7\u05d5\u05d3 \u05e7\u05e8\u05d9\u05d0 \u05d9\u05d5\u05ea\u05e8<\/a>, \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7 \u05d5\u05dc\u05d1\u05d3\u05d9\u05e7\u05d4 \u05d5\u05de\u05d4\u05d9\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05dc\u05d4\u05d5\u05e1\u05e4\u05d5\u05ea \u05d5\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d8\u05d5\u05d5\u05d7 \u05d4\u05e8\u05d7\u05d5\u05e7.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u05e8\u05d5\u05d1\u05e8\u05d8 \u05de\u05e8\u05d8\u05d9\u05df (\u05d4\u05de\u05d5\u05db\u05e8 \u05d2\u05dd \u05db- Uncle Bob), \u05d4\u05d0\u05d9\u05e9 \u05e9\u05d4\u05d1\u05d9\u05d0 \u05dc\u05e0\u05d5 \u05d0\u05ea Clean Code, \u05d4\u05d2\u05d3\u05d9\u05e8 \u05d1\u05de\u05d0\u05de\u05e8\u05d9\u05d5 \u05d5\u05d1\u05e1\u05e4\u05e8\u05d9\u05d5 \u05d7\u05de\u05d9\u05e9\u05d4 \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e0\u05d5\u05e2\u05d3\u05d5 \u05dc\u05e9\u05e4\u05e8 \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05e9\u05dc \u05de\u05e2\u05e8\u05db\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05de\u05d5\u05e0\u05d7\u05d5\u05ea \u05e2\u05e6\u05de\u05d9\u05dd \u2013 OOP. \u05d7\u05de\u05e9\u05ea \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4\u05d0\u05dc\u05d5 \u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05d9\u05e6\u05d5\u05e8 \u05ea\u05d5\u05db\u05e0\u05d4 \u05e7\u05dc\u05d4 \u05dc\u05d4\u05d1\u05e0\u05d4, \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4. \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d0\u05dc\u05d5 \u05e0\u05d5\u05d3\u05e2\u05d5 \u05d1\u05e8\u05d0\u05e9\u05d9 \u05d4\u05ea\u05d9\u05d1\u05d5\u05ea: SOLID \u05d5\u05d4\u05dd: ________________________________________________________________________________________________________________ Single Responsibility Principle (SRP) \u05d9\u05e9 \u05d0\u05d5\u05de\u05e8\u05d9\u05dd \u05e9\u05d2\u05d1\u05e8\u05d9\u05dd \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc\u05d9\u05dd \u05dc\u05d8\u05e4\u05dc \u05d1\u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d1\u05e8 \u05d0\u05d7\u05d3 \u05d1\u05db\u05dc \u05e4\u05e2\u05dd. \u05dc\u05d0 \u05d9\u05d5\u05d3\u05e2 \u05e2\u05d3 \u05db\u05de\u05d4 \u05d6\u05d4 \u05e0\u05db\u05d5\u05df, \u05d0\u05d1\u05dc \u05d1\u05db\u05ea\u05d9\u05d1\u05ea \u05e7\u05d5\u05d3, \u05d0\u05db\u05df \u05de\u05d5\u05de\u05dc\u05e5 \u05e9\u05dc\u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05ea\u05d4\u05d9\u05d4 \u05d0\u05d7\u05e8\u05d9\u05d5\u05ea \u05d0\u05d7\u05ea \u05d1\u05dc\u05d1\u05d3. \u05db\u05dc\u05d5\u05de\u05e8, \u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05e6\u05e8\u05d9\u05db\u05d4 \u05dc\u05d8\u05e4\u05dc \u05d1\u05d4\u05d9\u05d1\u05d8 \u05d0\u05d7\u05d3 \u05d1\u05dc\u05d1\u05d3 \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05dc\u05d0 \u05d9\u05d5\u05ea\u05e8 \u05de\u05db\u05da. \u05dc\u05d3\u05d5\u05d2\u05de\u05d0: \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05de\u05d7\u05dc\u05e7\u05ea `Invoice` \u05de\u05d8\u05e4\u05dc\u05ea \u05e8\u05e7 \u05d1\u05d7\u05d9\u05e9\u05d5\u05d1 \u05d4\u05e1\u05db\u05d5\u05dd \u05d4\u05db\u05d5\u05dc\u05dc, \u05d1\u05e2\u05d5\u05d3 \u05e9-`InvoicePrinter` \u05de\u05d8\u05e4\u05dc\u05ea \u05d1\u05d4\u05d3\u05e4\u05e1\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05e0\u05d9\u05ea. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05de\u05d9\u05dc\u05d4 And \u05de\u05d5\u05e4\u05d9\u05e2\u05d4 \u05d1\u05e9\u05dd \u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd, \u05d6\u05d5 \u05db\u05e0\u05e8\u05d0\u05d4 \u05d0\u05d9\u05e0\u05d3\u05d9\u05e7\u05e6\u05d9\u05d4 \u05dc\u05db\u05da \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd \u05de\u05e4\u05e8\u05d4 \u05d0\u05ea SRP. \u05d5\u05d2\u05dd &#8211; \u05db\u05d0\u05e9\u05e8 \u05e7\u05e9\u05d4 \u05dc\u05d4\u05d1\u05d9\u05df \u05de\u05d4 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05de\u05d7\u05dc\u05e7\u05d4 \u05de\u05e1\u05d5\u05d9\u05de\u05ea \u05e2\u05d5\u05e9\u05d4, \u05d0\u05d5 \u05e9\u05e7\u05e9\u05d4 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d1\u05dc\u05d9 \u05dc\u05e4\u05d2\u05d5\u05e2 \u05d1\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05e9\u05dc \u05d4\u05de\u05d7\u05dc\u05e7\u05d4, \u05d9\u05e9 \u05e1\u05d9\u05db\u05d5\u05d9 \u05dc\u05d0 \u05e7\u05d8\u05df \u05e9\u05e4\u05d2\u05e9\u05ea\u05dd \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc SRP. Open\/Closed Principle (OCP) \u05db\u05d9\u05d3\u05d5\u05e2, \u05db\u05dc \u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d4\u05d9\u05d0 \u05d1\u05e1\u05d9\u05e1 \u05dc\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd. \u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05e6\u05d1\u05d0 \u05d5\u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05ea\u05d5\u05db\u05e0\u05d4. \u05d1\u05ea\u05db\u05e0\u05d5\u05df \u05d8\u05d5\u05d1 \u05e0\u05d5\u05db\u05dc \u05dc\u05d3\u05d0\u05d5\u05d2 \u05dc\u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05d9\u05d4\u05d9\u05d4 \u05dc\u05d4\u05e8\u05d7\u05d9\u05d1 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d4\u05d5\u05e1\u05e4\u05ea \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05d7\u05d3\u05e9\u05d4 \u05e2\u05dc \u05e4\u05d9 \u05d4\u05e6\u05e8\u05db\u05d9\u05dd \u05d4\u05e2\u05ea\u05d9\u05d3\u05d9\u05d9\u05dd, \u05d0\u05da \u05dc\u05e2\u05e9\u05d5\u05ea \u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05e9\u05e0\u05e6\u05d8\u05e8\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd. \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05e6\u05d5\u05e8\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d9\u05e6\u05d9\u05e8\u05ea \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d4\u05d9\u05d5\u05e8\u05e9\u05d5\u05ea \u05de-`Shape` \u05d5\u05de\u05d9\u05d9\u05e9\u05de\u05d5\u05ea \u05d0\u05ea \u05d4\u05e9\u05d9\u05d8\u05d4 `Area`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d1\u05db\u05dc \u05e4\u05e2\u05dd \u05e9\u05d0\u05ea\u05d4 \u05de\u05d5\u05e1\u05d9\u05e3 \u05ea\u05db\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05d0\u05ea\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd \u05d1\u05d0\u05d5\u05e4\u05df \u05de\u05e9\u05de\u05e2\u05d5\u05ea\u05d9, \u05e1\u05d1\u05d9\u05e8 \u05dc\u05d4\u05e0\u05d9\u05d7 \u05e9\u05d0\u05ea\u05d4 \u05de\u05e4\u05e8 \u05d0\u05ea OCP. \u05d5\u05d2\u05dd \u2013 \u05d0\u05dd \u05d0\u05ea\u05d4 \u05e8\u05d5\u05d0\u05d4 \u05ea\u05dc\u05d5\u05ea \u05d9\u05e9\u05d9\u05e8\u05d4 \u05d1\u05d9\u05df \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05db\u05da \u05e9\u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d4 \u05d0\u05d7\u05ea \u05de\u05d7\u05d9\u05d9\u05d1 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d9\u05e9 \u05e4\u05d4 \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc OCP. Liskov Substitution Principle (LSP) \u05d1\u05e8\u05d1\u05e8\u05d4 \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (Barbara Liskov) \u05d4\u05d9\u05d0 \u05de\u05d3\u05e2\u05e0\u05d9\u05ea \u05de\u05d7\u05e9\u05d1 \u05d0\u05de\u05e8\u05d9\u05e7\u05d0\u05d9\u05ea, \u05d0\u05d7\u05ea \u05d4\u05d3\u05de\u05d5\u05d9\u05d5\u05ea \u05d4\u05de\u05e9\u05e4\u05d9\u05e2\u05d5\u05ea \u05d1\u05d9\u05d5\u05ea\u05e8 \u05d1\u05ea\u05d7\u05d5\u05dd \u05de\u05d3\u05e2\u05d9 \u05d4\u05de\u05d7\u05e9\u05d1 \u05d5\u05d4\u05e0\u05d3\u05e1\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05d6\u05d5\u05db\u05ea \u05e4\u05e8\u05e1 \u05d8\u05d9\u05d5\u05e8\u05d9\u05e0\u05d2 \u05d1\u05e9\u05e0\u05ea 2008 . \u05dc\u05e6\u05d9\u05d1\u05d5\u05e8 \u05d4\u05de\u05ea\u05db\u05e0\u05ea\u05d9\u05dd \u05d4\u05d9\u05d0 \u05d9\u05d3\u05d5\u05e2\u05d4 \u05d1\u05e2\u05d9\u05e7\u05e8 \u05de\u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05e0\u05e7\u05e8\u05d0 \u05e2\u05dc \u05e9\u05de\u05d4. \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e1\u05d9\u05e1 \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05d1\u05e2\u05dc\u05d5\u05ea \u05d9\u05db\u05d5\u05dc\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d7\u05dc\u05e4\u05d5\u05ea \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d4\u05e0\u05d2\u05d6\u05e8\u05d5\u05ea \u05de\u05d4\u05df, \u05d5\u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05dc\u05e9\u05d1\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4. \u05d3\u05d5\u05d2\u05de\u05d0: \u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 \u05d0\u05e0\u05d7\u05e0\u05d5 &#8220;\u05db\u05d5\u05e4\u05d9\u05dd&#8221; \u05e2\u05dc \u05d9\u05e2\u05e0\u05d9\u05dd \u05dc\u05e2\u05d5\u05e3&#8230; \u05d2\u05dd \u05d0\u05dd \u05e0\u05d8\u05de\u05d5\u05df \u05d0\u05ea \u05d4\u05e8\u05d0\u05e9 \u05d1\u05d7\u05d5\u05dc, \u05d6\u05d4 \u05dc\u05d0 \u05d9\u05e2\u05d1\u05d5\u05d3. \u05ea\u05d4\u05d9\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4. \u05d5\u05dc\u05db\u05df, \u05db\u05d3\u05d9 \u05dc\u05d4\u05d9\u05de\u05e0\u05e2 \u05de\u05e9\u05d1\u05d9\u05e8\u05ea LSP, \u05d9\u05e9 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05db\u05da \u05e9\u05de\u05d7\u05dc\u05e7\u05ea `Ostrich` \u05dc\u05d0 \u05ea\u05d9\u05e8\u05e9 \u05de-`Bird`, \u05d0\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05d0\u05d9\u05e0\u05d4 \u05d4\u05d2\u05d9\u05d5\u05e0\u05d9\u05ea. \u05db\u05d3\u05d9 \u05dc\u05ea\u05e7\u05df \u05d0\u05ea \u05d4\u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05db\u05da \u05e9\u05e0\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05e2\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05dc \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (LSP), &nbsp;\u05e0\u05d1\u05e6\u05e2 \u05d0\u05ea \u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d4\u05d1\u05d0\u05d9\u05dd: \u05d1\u05de\u05e7\u05d5\u05dd \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 Ostrich \u00a0\u05ea\u05d9\u05e8\u05e9 \u05de-Bird \u05e0\u05d9\u05e6\u05d5\u05e8 \u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05e9\u05d1\u05d4 \u05dc\u05db\u05dc \u05d4\u05e6\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd \u05d9\u05e9 \u05e4\u05e2\u05d5\u05dc\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea \u05e9\u05dc Move \u00a0\u00a0\u05d1\u05de\u05e7\u05d5\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05ea \u05e9\u05dc Fly. \u05db\u05dc \u05e6\u05d9\u05e4\u05d5\u05e8 \u05ea\u05d9\u05d9\u05e9\u05dd \u05d0\u05ea \u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d4\u05d6\u05d5 \u05d1\u05d3\u05e8\u05db\u05d4 \u05e9\u05dc\u05d4. \u05d4\u05e0\u05d4 \u05d3\u05d5\u05d2\u05de\u05d0 \u05dc\u05e7\u05d5\u05d3 \u05de\u05ea\u05d5\u05e7\u05df: \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05e7\u05d5\u05d3 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05ea\u05e0\u05d0\u05d9\u05dd \u05dc\u05d1\u05d3\u05d9\u05e7\u05ea \u05e1\u05d5\u05d2 \u05d4\u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05d7\u05dc\u05d9\u05d8 \u05dc\u05d0\u05d9\u05d6\u05d4 \u05de\u05ea\u05d5\u05d3\u05d4 \u05dc\u05e7\u05e8\u05d5\u05d0, \u05e7\u05e8\u05d5\u05d1 \u05dc\u05d5\u05d5\u05d3\u05d0\u05d9 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea LSP. Interface Segregation Principle (ISP) \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05d9\u05e9 \u05dc\u05e4\u05e6\u05dc \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05d2\u05d3\u05d5\u05dc\u05d9\u05dd \u05dc\u05de\u05e1\u05e4\u05e8 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05e7\u05d8\u05e0\u05d9\u05dd \u05d5\u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05d9\u05dd, \u05db\u05da \u05e9\u05d4-client &nbsp;\u05dc\u05d0 \u05d9\u05d4\u05d9\u05d4 \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d9\u05d9\u05e9\u05dd \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05e9\u05d0\u05d9\u05e0\u05df \u05e0\u05d3\u05e8\u05e9\u05d5\u05ea \u05dc\u05d5. \u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 &nbsp;`SimplePrinter` \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05e8\u05e7 \u05d0\u05ea `IPrinter`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d9 \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05db\u05da \u05e9\u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05e9\u05de\u05d9\u05d9\u05e9\u05de\u05d9\u05dd \u05d0\u05d5\u05ea\u05d5 \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05d1\u05d9\u05df \u05d4\u05e9\u05d0\u05e8 \u05d2\u05dd \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05e9\u05e0\u05d5\u05ea\u05e8\u05d5\u05ea \u05dc\u05dc\u05d0 \u05e9\u05d9\u05de\u05d5\u05e9 \u2013 \u05db\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea ISP. Dependency Inversion Principle (DIP) \u05d4\u05e8\u05d1\u05d4 \u05de\u05d3\u05d1\u05e8\u05d9\u05dd \u05e2\u05dc \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea \u05d1\u05de\u05d3\u05d9\u05e0\u05d4, \u05d0\u05d1\u05dc \u05d2\u05dd \u05d1\u05e7\u05d5\u05d3 \u05d6\u05d4 \u05db\u05db\u05d4. \u05db\u05d3\u05d9 \u05e9\u05e7\u05d5\u05d3 \u05d9\u05d4\u05d9\u05d4 \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05e9\u05de\u05e8 \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea. \u05d7\u05dc\u05e7\u05d9 \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e6\u05e8\u05d9\u05db\u05d9\u05dd \u05dc\u05d4\u05d9\u05d5\u05ea \u05db\u05de\u05d4 \u05e9\u05e4\u05d7\u05d5\u05ea \u05e6\u05de\u05d5\u05d3\u05d9\u05dd (coupled) \u05d0\u05d7\u05d3 \u05dc\u05e9\u05e0\u05d9. \u05d0\u05d7\u05d3 \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05e0\u05d5 \u05d1\u05d6\u05d4 \u05d4\u05d5\u05d0 Dependecy Inversion Principle, \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d9\u05e4\u05d5\u05da \u05d4\u05ea\u05dc\u05d5\u05ea. \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4-DIP \u05d0\u05dd \u05dc\u05de\u05e9\u05dc \u05d9\u05d4\u05d9\u05d4 \u05dc\u05e0\u05d5 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc \u05dc\u05d5\u05d2\u05d9\u05dd \u05d5\u05db\u05de\u05d4 \u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd \u05e9\u05dc\u05d5 \u05d1\u05d0\u05d5\u05e4\u05df \u05d4\u05d6\u05d4: \u05e0\u05d5\u05db\u05dc \u05d1\u05e7\u05dc\u05d9\u05d9\u05e0\u05d8 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d0\u05d9\u05d6\u05d4 \u05de\u05d9\u05de\u05d5\u05e9 \u05e9\u05e0\u05e8\u05e6\u05d4 \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05d4\u05d5\u05d0 \u05de\u05e7\u05d1\u05dc \u05d1\u05e7\u05d5\u05e0\u05e1\u05d8\u05e8\u05e7\u05d8\u05d5\u05e8 \u05e9\u05dc\u05d5 \u05d0\u05ea \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, `UserService` \u05dc\u05d0 \u05ea\u05dc\u05d5\u05d9 \u05d1\u05d9\u05d9\u05e9\u05d5\u05dd \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9 \u05e9\u05dc `ILogger` \u05d0\u05dc\u05d0 \u05d1\u05de\u05de\u05e9\u05e7, \u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d7\u05dc\u05d9\u05e3 \u05d0\u05ea \u05d4\u05dc\u05d5\u05d2\u05e8\u05d9\u05dd \u05dc\u05dc\u05d0 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e7\u05d5\u05d3 \u05e9\u05dc `UserService`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05e7\u05e9\u05d4 \u05dc\u05db\u05dd \u05dc\u05db\u05ea\u05d5\u05d1 \u05d8\u05e1\u05d8\u05d9\u05dd \u05dc\u05e7\u05dc\u05d0\u05e1 \u05d0\u05d5 \u05dc\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d4 \u05d1\u05d2\u05dc\u05dc \u05e9\u05d4\u05d9\u05d0 \u05ea\u05dc\u05d5\u05d9\u05d4 \u05d1\u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e7\u05d5\u05e0\u05e7\u05e8\u05d8\u05d9\u05d9\u05dd \u05e9\u05dc \u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd, \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea DIP. _______________________________________________________________________________________________________________ \u05d6\u05d5\u05d4\u05d9 \u05d8\u05e2\u05d9\u05de\u05d4 \u05e2\u05dc \u05e7\u05e6\u05d4 \u05d4\u05de\u05d6\u05dc\u05d2 \u05e9\u05dc \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID. \u05de\u05d9 \u05e9\u05d9\u05e7\u05e4\u05d9\u05d3 \u05e2\u05dc\u05d9\u05d4\u05dd \u05d1\u05d6\u05de\u05df \u05db\u05ea\u05d9\u05d1\u05ea \u05d4\u05e7\u05d5\u05d3, \u05d9\u05e8\u05d5\u05d5\u05d9\u05d7 \u05e7\u05d5\u05d3 \u05e7\u05e8\u05d9\u05d0 \u05d9\u05d5\u05ea\u05e8, \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7 \u05d5\u05dc\u05d1\u05d3\u05d9\u05e7\u05d4 \u05d5\u05de\u05d4\u05d9\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05dc\u05d4\u05d5\u05e1\u05e4\u05d5\u05ea \u05d5\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d8\u05d5\u05d5\u05d7 \u05d4\u05e8\u05d7\u05d5\u05e7.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,10,1],"tags":[2,5,3,4],"class_list":["post-206","post","type-post","status-publish","format-standard","hentry","category-c","category-designpatterns","category-solid","tag-clean-code","tag-design-patterns","tag-dev","tag-solid"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd - Design for Living<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hernan-yehuda.net\/?p=206\" \/>\n<meta property=\"og:locale\" content=\"he_IL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd - Design for Living\" \/>\n<meta property=\"og:description\" content=\"\u05e8\u05d5\u05d1\u05e8\u05d8 \u05de\u05e8\u05d8\u05d9\u05df (\u05d4\u05de\u05d5\u05db\u05e8 \u05d2\u05dd \u05db- Uncle Bob), \u05d4\u05d0\u05d9\u05e9 \u05e9\u05d4\u05d1\u05d9\u05d0 \u05dc\u05e0\u05d5 \u05d0\u05ea Clean Code, \u05d4\u05d2\u05d3\u05d9\u05e8 \u05d1\u05de\u05d0\u05de\u05e8\u05d9\u05d5 \u05d5\u05d1\u05e1\u05e4\u05e8\u05d9\u05d5 \u05d7\u05de\u05d9\u05e9\u05d4 \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e0\u05d5\u05e2\u05d3\u05d5 \u05dc\u05e9\u05e4\u05e8 \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05e9\u05dc \u05de\u05e2\u05e8\u05db\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05de\u05d5\u05e0\u05d7\u05d5\u05ea \u05e2\u05e6\u05de\u05d9\u05dd \u2013 OOP. \u05d7\u05de\u05e9\u05ea \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4\u05d0\u05dc\u05d5 \u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05d9\u05e6\u05d5\u05e8 \u05ea\u05d5\u05db\u05e0\u05d4 \u05e7\u05dc\u05d4 \u05dc\u05d4\u05d1\u05e0\u05d4, \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4. \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d0\u05dc\u05d5 \u05e0\u05d5\u05d3\u05e2\u05d5 \u05d1\u05e8\u05d0\u05e9\u05d9 \u05d4\u05ea\u05d9\u05d1\u05d5\u05ea: SOLID \u05d5\u05d4\u05dd: ________________________________________________________________________________________________________________ Single Responsibility Principle (SRP) \u05d9\u05e9 \u05d0\u05d5\u05de\u05e8\u05d9\u05dd \u05e9\u05d2\u05d1\u05e8\u05d9\u05dd \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc\u05d9\u05dd \u05dc\u05d8\u05e4\u05dc \u05d1\u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d1\u05e8 \u05d0\u05d7\u05d3 \u05d1\u05db\u05dc \u05e4\u05e2\u05dd. \u05dc\u05d0 \u05d9\u05d5\u05d3\u05e2 \u05e2\u05d3 \u05db\u05de\u05d4 \u05d6\u05d4 \u05e0\u05db\u05d5\u05df, \u05d0\u05d1\u05dc \u05d1\u05db\u05ea\u05d9\u05d1\u05ea \u05e7\u05d5\u05d3, \u05d0\u05db\u05df \u05de\u05d5\u05de\u05dc\u05e5 \u05e9\u05dc\u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05ea\u05d4\u05d9\u05d4 \u05d0\u05d7\u05e8\u05d9\u05d5\u05ea \u05d0\u05d7\u05ea \u05d1\u05dc\u05d1\u05d3. \u05db\u05dc\u05d5\u05de\u05e8, \u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05e6\u05e8\u05d9\u05db\u05d4 \u05dc\u05d8\u05e4\u05dc \u05d1\u05d4\u05d9\u05d1\u05d8 \u05d0\u05d7\u05d3 \u05d1\u05dc\u05d1\u05d3 \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05dc\u05d0 \u05d9\u05d5\u05ea\u05e8 \u05de\u05db\u05da. \u05dc\u05d3\u05d5\u05d2\u05de\u05d0: \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05de\u05d7\u05dc\u05e7\u05ea `Invoice` \u05de\u05d8\u05e4\u05dc\u05ea \u05e8\u05e7 \u05d1\u05d7\u05d9\u05e9\u05d5\u05d1 \u05d4\u05e1\u05db\u05d5\u05dd \u05d4\u05db\u05d5\u05dc\u05dc, \u05d1\u05e2\u05d5\u05d3 \u05e9-`InvoicePrinter` \u05de\u05d8\u05e4\u05dc\u05ea \u05d1\u05d4\u05d3\u05e4\u05e1\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05e0\u05d9\u05ea. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05de\u05d9\u05dc\u05d4 And \u05de\u05d5\u05e4\u05d9\u05e2\u05d4 \u05d1\u05e9\u05dd \u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd, \u05d6\u05d5 \u05db\u05e0\u05e8\u05d0\u05d4 \u05d0\u05d9\u05e0\u05d3\u05d9\u05e7\u05e6\u05d9\u05d4 \u05dc\u05db\u05da \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd \u05de\u05e4\u05e8\u05d4 \u05d0\u05ea SRP. \u05d5\u05d2\u05dd &#8211; \u05db\u05d0\u05e9\u05e8 \u05e7\u05e9\u05d4 \u05dc\u05d4\u05d1\u05d9\u05df \u05de\u05d4 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05de\u05d7\u05dc\u05e7\u05d4 \u05de\u05e1\u05d5\u05d9\u05de\u05ea \u05e2\u05d5\u05e9\u05d4, \u05d0\u05d5 \u05e9\u05e7\u05e9\u05d4 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d1\u05dc\u05d9 \u05dc\u05e4\u05d2\u05d5\u05e2 \u05d1\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05e9\u05dc \u05d4\u05de\u05d7\u05dc\u05e7\u05d4, \u05d9\u05e9 \u05e1\u05d9\u05db\u05d5\u05d9 \u05dc\u05d0 \u05e7\u05d8\u05df \u05e9\u05e4\u05d2\u05e9\u05ea\u05dd \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc SRP. Open\/Closed Principle (OCP) \u05db\u05d9\u05d3\u05d5\u05e2, \u05db\u05dc \u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d4\u05d9\u05d0 \u05d1\u05e1\u05d9\u05e1 \u05dc\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd. \u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05e6\u05d1\u05d0 \u05d5\u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05ea\u05d5\u05db\u05e0\u05d4. \u05d1\u05ea\u05db\u05e0\u05d5\u05df \u05d8\u05d5\u05d1 \u05e0\u05d5\u05db\u05dc \u05dc\u05d3\u05d0\u05d5\u05d2 \u05dc\u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05d9\u05d4\u05d9\u05d4 \u05dc\u05d4\u05e8\u05d7\u05d9\u05d1 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d4\u05d5\u05e1\u05e4\u05ea \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05d7\u05d3\u05e9\u05d4 \u05e2\u05dc \u05e4\u05d9 \u05d4\u05e6\u05e8\u05db\u05d9\u05dd \u05d4\u05e2\u05ea\u05d9\u05d3\u05d9\u05d9\u05dd, \u05d0\u05da \u05dc\u05e2\u05e9\u05d5\u05ea \u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05e9\u05e0\u05e6\u05d8\u05e8\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd. \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05e6\u05d5\u05e8\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d9\u05e6\u05d9\u05e8\u05ea \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d4\u05d9\u05d5\u05e8\u05e9\u05d5\u05ea \u05de-`Shape` \u05d5\u05de\u05d9\u05d9\u05e9\u05de\u05d5\u05ea \u05d0\u05ea \u05d4\u05e9\u05d9\u05d8\u05d4 `Area`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d1\u05db\u05dc \u05e4\u05e2\u05dd \u05e9\u05d0\u05ea\u05d4 \u05de\u05d5\u05e1\u05d9\u05e3 \u05ea\u05db\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05d0\u05ea\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd \u05d1\u05d0\u05d5\u05e4\u05df \u05de\u05e9\u05de\u05e2\u05d5\u05ea\u05d9, \u05e1\u05d1\u05d9\u05e8 \u05dc\u05d4\u05e0\u05d9\u05d7 \u05e9\u05d0\u05ea\u05d4 \u05de\u05e4\u05e8 \u05d0\u05ea OCP. \u05d5\u05d2\u05dd \u2013 \u05d0\u05dd \u05d0\u05ea\u05d4 \u05e8\u05d5\u05d0\u05d4 \u05ea\u05dc\u05d5\u05ea \u05d9\u05e9\u05d9\u05e8\u05d4 \u05d1\u05d9\u05df \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05db\u05da \u05e9\u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d4 \u05d0\u05d7\u05ea \u05de\u05d7\u05d9\u05d9\u05d1 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d9\u05e9 \u05e4\u05d4 \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc OCP. Liskov Substitution Principle (LSP) \u05d1\u05e8\u05d1\u05e8\u05d4 \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (Barbara Liskov) \u05d4\u05d9\u05d0 \u05de\u05d3\u05e2\u05e0\u05d9\u05ea \u05de\u05d7\u05e9\u05d1 \u05d0\u05de\u05e8\u05d9\u05e7\u05d0\u05d9\u05ea, \u05d0\u05d7\u05ea \u05d4\u05d3\u05de\u05d5\u05d9\u05d5\u05ea \u05d4\u05de\u05e9\u05e4\u05d9\u05e2\u05d5\u05ea \u05d1\u05d9\u05d5\u05ea\u05e8 \u05d1\u05ea\u05d7\u05d5\u05dd \u05de\u05d3\u05e2\u05d9 \u05d4\u05de\u05d7\u05e9\u05d1 \u05d5\u05d4\u05e0\u05d3\u05e1\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05d6\u05d5\u05db\u05ea \u05e4\u05e8\u05e1 \u05d8\u05d9\u05d5\u05e8\u05d9\u05e0\u05d2 \u05d1\u05e9\u05e0\u05ea 2008 . \u05dc\u05e6\u05d9\u05d1\u05d5\u05e8 \u05d4\u05de\u05ea\u05db\u05e0\u05ea\u05d9\u05dd \u05d4\u05d9\u05d0 \u05d9\u05d3\u05d5\u05e2\u05d4 \u05d1\u05e2\u05d9\u05e7\u05e8 \u05de\u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05e0\u05e7\u05e8\u05d0 \u05e2\u05dc \u05e9\u05de\u05d4. \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e1\u05d9\u05e1 \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05d1\u05e2\u05dc\u05d5\u05ea \u05d9\u05db\u05d5\u05dc\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d7\u05dc\u05e4\u05d5\u05ea \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d4\u05e0\u05d2\u05d6\u05e8\u05d5\u05ea \u05de\u05d4\u05df, \u05d5\u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05dc\u05e9\u05d1\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4. \u05d3\u05d5\u05d2\u05de\u05d0: \u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 \u05d0\u05e0\u05d7\u05e0\u05d5 &#8220;\u05db\u05d5\u05e4\u05d9\u05dd&#8221; \u05e2\u05dc \u05d9\u05e2\u05e0\u05d9\u05dd \u05dc\u05e2\u05d5\u05e3&#8230; \u05d2\u05dd \u05d0\u05dd \u05e0\u05d8\u05de\u05d5\u05df \u05d0\u05ea \u05d4\u05e8\u05d0\u05e9 \u05d1\u05d7\u05d5\u05dc, \u05d6\u05d4 \u05dc\u05d0 \u05d9\u05e2\u05d1\u05d5\u05d3. \u05ea\u05d4\u05d9\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4. \u05d5\u05dc\u05db\u05df, \u05db\u05d3\u05d9 \u05dc\u05d4\u05d9\u05de\u05e0\u05e2 \u05de\u05e9\u05d1\u05d9\u05e8\u05ea LSP, \u05d9\u05e9 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05db\u05da \u05e9\u05de\u05d7\u05dc\u05e7\u05ea `Ostrich` \u05dc\u05d0 \u05ea\u05d9\u05e8\u05e9 \u05de-`Bird`, \u05d0\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05d0\u05d9\u05e0\u05d4 \u05d4\u05d2\u05d9\u05d5\u05e0\u05d9\u05ea. \u05db\u05d3\u05d9 \u05dc\u05ea\u05e7\u05df \u05d0\u05ea \u05d4\u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05db\u05da \u05e9\u05e0\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05e2\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05dc \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (LSP), &nbsp;\u05e0\u05d1\u05e6\u05e2 \u05d0\u05ea \u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d4\u05d1\u05d0\u05d9\u05dd: \u05d1\u05de\u05e7\u05d5\u05dd \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 Ostrich \u00a0\u05ea\u05d9\u05e8\u05e9 \u05de-Bird \u05e0\u05d9\u05e6\u05d5\u05e8 \u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05e9\u05d1\u05d4 \u05dc\u05db\u05dc \u05d4\u05e6\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd \u05d9\u05e9 \u05e4\u05e2\u05d5\u05dc\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea \u05e9\u05dc Move \u00a0\u00a0\u05d1\u05de\u05e7\u05d5\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05ea \u05e9\u05dc Fly. \u05db\u05dc \u05e6\u05d9\u05e4\u05d5\u05e8 \u05ea\u05d9\u05d9\u05e9\u05dd \u05d0\u05ea \u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d4\u05d6\u05d5 \u05d1\u05d3\u05e8\u05db\u05d4 \u05e9\u05dc\u05d4. \u05d4\u05e0\u05d4 \u05d3\u05d5\u05d2\u05de\u05d0 \u05dc\u05e7\u05d5\u05d3 \u05de\u05ea\u05d5\u05e7\u05df: \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05e7\u05d5\u05d3 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05ea\u05e0\u05d0\u05d9\u05dd \u05dc\u05d1\u05d3\u05d9\u05e7\u05ea \u05e1\u05d5\u05d2 \u05d4\u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05d7\u05dc\u05d9\u05d8 \u05dc\u05d0\u05d9\u05d6\u05d4 \u05de\u05ea\u05d5\u05d3\u05d4 \u05dc\u05e7\u05e8\u05d5\u05d0, \u05e7\u05e8\u05d5\u05d1 \u05dc\u05d5\u05d5\u05d3\u05d0\u05d9 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea LSP. Interface Segregation Principle (ISP) \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05d9\u05e9 \u05dc\u05e4\u05e6\u05dc \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05d2\u05d3\u05d5\u05dc\u05d9\u05dd \u05dc\u05de\u05e1\u05e4\u05e8 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05e7\u05d8\u05e0\u05d9\u05dd \u05d5\u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05d9\u05dd, \u05db\u05da \u05e9\u05d4-client &nbsp;\u05dc\u05d0 \u05d9\u05d4\u05d9\u05d4 \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d9\u05d9\u05e9\u05dd \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05e9\u05d0\u05d9\u05e0\u05df \u05e0\u05d3\u05e8\u05e9\u05d5\u05ea \u05dc\u05d5. \u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 &nbsp;`SimplePrinter` \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05e8\u05e7 \u05d0\u05ea `IPrinter`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d9 \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05db\u05da \u05e9\u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05e9\u05de\u05d9\u05d9\u05e9\u05de\u05d9\u05dd \u05d0\u05d5\u05ea\u05d5 \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05d1\u05d9\u05df \u05d4\u05e9\u05d0\u05e8 \u05d2\u05dd \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05e9\u05e0\u05d5\u05ea\u05e8\u05d5\u05ea \u05dc\u05dc\u05d0 \u05e9\u05d9\u05de\u05d5\u05e9 \u2013 \u05db\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea ISP. Dependency Inversion Principle (DIP) \u05d4\u05e8\u05d1\u05d4 \u05de\u05d3\u05d1\u05e8\u05d9\u05dd \u05e2\u05dc \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea \u05d1\u05de\u05d3\u05d9\u05e0\u05d4, \u05d0\u05d1\u05dc \u05d2\u05dd \u05d1\u05e7\u05d5\u05d3 \u05d6\u05d4 \u05db\u05db\u05d4. \u05db\u05d3\u05d9 \u05e9\u05e7\u05d5\u05d3 \u05d9\u05d4\u05d9\u05d4 \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05e9\u05de\u05e8 \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea. \u05d7\u05dc\u05e7\u05d9 \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e6\u05e8\u05d9\u05db\u05d9\u05dd \u05dc\u05d4\u05d9\u05d5\u05ea \u05db\u05de\u05d4 \u05e9\u05e4\u05d7\u05d5\u05ea \u05e6\u05de\u05d5\u05d3\u05d9\u05dd (coupled) \u05d0\u05d7\u05d3 \u05dc\u05e9\u05e0\u05d9. \u05d0\u05d7\u05d3 \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05e0\u05d5 \u05d1\u05d6\u05d4 \u05d4\u05d5\u05d0 Dependecy Inversion Principle, \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d9\u05e4\u05d5\u05da \u05d4\u05ea\u05dc\u05d5\u05ea. \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4-DIP \u05d0\u05dd \u05dc\u05de\u05e9\u05dc \u05d9\u05d4\u05d9\u05d4 \u05dc\u05e0\u05d5 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc \u05dc\u05d5\u05d2\u05d9\u05dd \u05d5\u05db\u05de\u05d4 \u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd \u05e9\u05dc\u05d5 \u05d1\u05d0\u05d5\u05e4\u05df \u05d4\u05d6\u05d4: \u05e0\u05d5\u05db\u05dc \u05d1\u05e7\u05dc\u05d9\u05d9\u05e0\u05d8 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d0\u05d9\u05d6\u05d4 \u05de\u05d9\u05de\u05d5\u05e9 \u05e9\u05e0\u05e8\u05e6\u05d4 \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05d4\u05d5\u05d0 \u05de\u05e7\u05d1\u05dc \u05d1\u05e7\u05d5\u05e0\u05e1\u05d8\u05e8\u05e7\u05d8\u05d5\u05e8 \u05e9\u05dc\u05d5 \u05d0\u05ea \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, `UserService` \u05dc\u05d0 \u05ea\u05dc\u05d5\u05d9 \u05d1\u05d9\u05d9\u05e9\u05d5\u05dd \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9 \u05e9\u05dc `ILogger` \u05d0\u05dc\u05d0 \u05d1\u05de\u05de\u05e9\u05e7, \u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d7\u05dc\u05d9\u05e3 \u05d0\u05ea \u05d4\u05dc\u05d5\u05d2\u05e8\u05d9\u05dd \u05dc\u05dc\u05d0 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e7\u05d5\u05d3 \u05e9\u05dc `UserService`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05e7\u05e9\u05d4 \u05dc\u05db\u05dd \u05dc\u05db\u05ea\u05d5\u05d1 \u05d8\u05e1\u05d8\u05d9\u05dd \u05dc\u05e7\u05dc\u05d0\u05e1 \u05d0\u05d5 \u05dc\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d4 \u05d1\u05d2\u05dc\u05dc \u05e9\u05d4\u05d9\u05d0 \u05ea\u05dc\u05d5\u05d9\u05d4 \u05d1\u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e7\u05d5\u05e0\u05e7\u05e8\u05d8\u05d9\u05d9\u05dd \u05e9\u05dc \u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd, \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea DIP. _______________________________________________________________________________________________________________ \u05d6\u05d5\u05d4\u05d9 \u05d8\u05e2\u05d9\u05de\u05d4 \u05e2\u05dc \u05e7\u05e6\u05d4 \u05d4\u05de\u05d6\u05dc\u05d2 \u05e9\u05dc \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID. \u05de\u05d9 \u05e9\u05d9\u05e7\u05e4\u05d9\u05d3 \u05e2\u05dc\u05d9\u05d4\u05dd \u05d1\u05d6\u05de\u05df \u05db\u05ea\u05d9\u05d1\u05ea \u05d4\u05e7\u05d5\u05d3, \u05d9\u05e8\u05d5\u05d5\u05d9\u05d7 \u05e7\u05d5\u05d3 \u05e7\u05e8\u05d9\u05d0 \u05d9\u05d5\u05ea\u05e8, \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7 \u05d5\u05dc\u05d1\u05d3\u05d9\u05e7\u05d4 \u05d5\u05de\u05d4\u05d9\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05dc\u05d4\u05d5\u05e1\u05e4\u05d5\u05ea \u05d5\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d8\u05d5\u05d5\u05d7 \u05d4\u05e8\u05d7\u05d5\u05e7.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hernan-yehuda.net\/?p=206\" \/>\n<meta property=\"og:site_name\" content=\"Design for Living\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-08T14:48:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-08T14:48:08+00:00\" \/>\n<meta name=\"author\" content=\"Hernan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u05e0\u05db\u05ea\u05d1 \u05e2\u05dc \u05d9\u05d3\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hernan\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u05d3\u05e7\u05d5\u05ea\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hernan-yehuda.net\/?p=206#article\",\"isPartOf\":{\"@id\":\"https:\/\/hernan-yehuda.net\/?p=206\"},\"author\":{\"name\":\"Hernan\",\"@id\":\"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64\"},\"headline\":\"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd\",\"datePublished\":\"2024-07-08T14:48:07+00:00\",\"dateModified\":\"2024-07-08T14:48:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hernan-yehuda.net\/?p=206\"},\"wordCount\":342,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64\"},\"keywords\":[\"Clean Code\",\"Design Patterns\",\"DEV\",\"SOLID\"],\"articleSection\":[\"#C\",\"Design Patterns\",\"SOLID\"],\"inLanguage\":\"he-IL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/hernan-yehuda.net\/?p=206#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hernan-yehuda.net\/?p=206\",\"url\":\"https:\/\/hernan-yehuda.net\/?p=206\",\"name\":\"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd - Design for Living\",\"isPartOf\":{\"@id\":\"https:\/\/hernan-yehuda.net\/#website\"},\"datePublished\":\"2024-07-08T14:48:07+00:00\",\"dateModified\":\"2024-07-08T14:48:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/hernan-yehuda.net\/?p=206#breadcrumb\"},\"inLanguage\":\"he-IL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hernan-yehuda.net\/?p=206\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hernan-yehuda.net\/?p=206#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u05d3\u05e3 \u05d4\u05d1\u05d9\u05ea\",\"item\":\"https:\/\/hernan-yehuda.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hernan-yehuda.net\/#website\",\"url\":\"https:\/\/hernan-yehuda.net\/\",\"name\":\"\u05d0\u05e8\u05e0\u05df \u05de\u05d9\u05d9\u05e1\u05dc\u05e1\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hernan-yehuda.net\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"he-IL\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64\",\"name\":\"Hernan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"he-IL\",\"@id\":\"https:\/\/hernan-yehuda.net\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fccf8cf4fc450b691c936a8d8435a7531aebd25301f198fe852050983a235aef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fccf8cf4fc450b691c936a8d8435a7531aebd25301f198fe852050983a235aef?s=96&d=mm&r=g\",\"caption\":\"Hernan\"},\"logo\":{\"@id\":\"https:\/\/hernan-yehuda.net\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/hernan-yehuda.net\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd - Design for Living","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hernan-yehuda.net\/?p=206","og_locale":"he_IL","og_type":"article","og_title":"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd - Design for Living","og_description":"\u05e8\u05d5\u05d1\u05e8\u05d8 \u05de\u05e8\u05d8\u05d9\u05df (\u05d4\u05de\u05d5\u05db\u05e8 \u05d2\u05dd \u05db- Uncle Bob), \u05d4\u05d0\u05d9\u05e9 \u05e9\u05d4\u05d1\u05d9\u05d0 \u05dc\u05e0\u05d5 \u05d0\u05ea Clean Code, \u05d4\u05d2\u05d3\u05d9\u05e8 \u05d1\u05de\u05d0\u05de\u05e8\u05d9\u05d5 \u05d5\u05d1\u05e1\u05e4\u05e8\u05d9\u05d5 \u05d7\u05de\u05d9\u05e9\u05d4 \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e0\u05d5\u05e2\u05d3\u05d5 \u05dc\u05e9\u05e4\u05e8 \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05e9\u05dc \u05de\u05e2\u05e8\u05db\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05de\u05d5\u05e0\u05d7\u05d5\u05ea \u05e2\u05e6\u05de\u05d9\u05dd \u2013 OOP. \u05d7\u05de\u05e9\u05ea \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4\u05d0\u05dc\u05d5 \u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05d9\u05e6\u05d5\u05e8 \u05ea\u05d5\u05db\u05e0\u05d4 \u05e7\u05dc\u05d4 \u05dc\u05d4\u05d1\u05e0\u05d4, \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4. \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d0\u05dc\u05d5 \u05e0\u05d5\u05d3\u05e2\u05d5 \u05d1\u05e8\u05d0\u05e9\u05d9 \u05d4\u05ea\u05d9\u05d1\u05d5\u05ea: SOLID \u05d5\u05d4\u05dd: ________________________________________________________________________________________________________________ Single Responsibility Principle (SRP) \u05d9\u05e9 \u05d0\u05d5\u05de\u05e8\u05d9\u05dd \u05e9\u05d2\u05d1\u05e8\u05d9\u05dd \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc\u05d9\u05dd \u05dc\u05d8\u05e4\u05dc \u05d1\u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d1\u05e8 \u05d0\u05d7\u05d3 \u05d1\u05db\u05dc \u05e4\u05e2\u05dd. \u05dc\u05d0 \u05d9\u05d5\u05d3\u05e2 \u05e2\u05d3 \u05db\u05de\u05d4 \u05d6\u05d4 \u05e0\u05db\u05d5\u05df, \u05d0\u05d1\u05dc \u05d1\u05db\u05ea\u05d9\u05d1\u05ea \u05e7\u05d5\u05d3, \u05d0\u05db\u05df \u05de\u05d5\u05de\u05dc\u05e5 \u05e9\u05dc\u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05ea\u05d4\u05d9\u05d4 \u05d0\u05d7\u05e8\u05d9\u05d5\u05ea \u05d0\u05d7\u05ea \u05d1\u05dc\u05d1\u05d3. \u05db\u05dc\u05d5\u05de\u05e8, \u05db\u05dc \u05de\u05d7\u05dc\u05e7\u05d4 \u05e6\u05e8\u05d9\u05db\u05d4 \u05dc\u05d8\u05e4\u05dc \u05d1\u05d4\u05d9\u05d1\u05d8 \u05d0\u05d7\u05d3 \u05d1\u05dc\u05d1\u05d3 \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05dc\u05d0 \u05d9\u05d5\u05ea\u05e8 \u05de\u05db\u05da. \u05dc\u05d3\u05d5\u05d2\u05de\u05d0: \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05de\u05d7\u05dc\u05e7\u05ea `Invoice` \u05de\u05d8\u05e4\u05dc\u05ea \u05e8\u05e7 \u05d1\u05d7\u05d9\u05e9\u05d5\u05d1 \u05d4\u05e1\u05db\u05d5\u05dd \u05d4\u05db\u05d5\u05dc\u05dc, \u05d1\u05e2\u05d5\u05d3 \u05e9-`InvoicePrinter` \u05de\u05d8\u05e4\u05dc\u05ea \u05d1\u05d4\u05d3\u05e4\u05e1\u05ea \u05d4\u05d7\u05e9\u05d1\u05d5\u05e0\u05d9\u05ea. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05de\u05d9\u05dc\u05d4 And \u05de\u05d5\u05e4\u05d9\u05e2\u05d4 \u05d1\u05e9\u05dd \u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd, \u05d6\u05d5 \u05db\u05e0\u05e8\u05d0\u05d4 \u05d0\u05d9\u05e0\u05d3\u05d9\u05e7\u05e6\u05d9\u05d4 \u05dc\u05db\u05da \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 \u05e9\u05dc\u05db\u05dd \u05de\u05e4\u05e8\u05d4 \u05d0\u05ea SRP. \u05d5\u05d2\u05dd &#8211; \u05db\u05d0\u05e9\u05e8 \u05e7\u05e9\u05d4 \u05dc\u05d4\u05d1\u05d9\u05df \u05de\u05d4 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05de\u05d7\u05dc\u05e7\u05d4 \u05de\u05e1\u05d5\u05d9\u05de\u05ea \u05e2\u05d5\u05e9\u05d4, \u05d0\u05d5 \u05e9\u05e7\u05e9\u05d4 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d1\u05dc\u05d9 \u05dc\u05e4\u05d2\u05d5\u05e2 \u05d1\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05e9\u05dc \u05d4\u05de\u05d7\u05dc\u05e7\u05d4, \u05d9\u05e9 \u05e1\u05d9\u05db\u05d5\u05d9 \u05dc\u05d0 \u05e7\u05d8\u05df \u05e9\u05e4\u05d2\u05e9\u05ea\u05dd \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc SRP. Open\/Closed Principle (OCP) \u05db\u05d9\u05d3\u05d5\u05e2, \u05db\u05dc \u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d4\u05d9\u05d0 \u05d1\u05e1\u05d9\u05e1 \u05dc\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd. \u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05e6\u05d1\u05d0 \u05d5\u05d6\u05d4 \u05e0\u05db\u05d5\u05df \u05d1\u05ea\u05d5\u05db\u05e0\u05d4. \u05d1\u05ea\u05db\u05e0\u05d5\u05df \u05d8\u05d5\u05d1 \u05e0\u05d5\u05db\u05dc \u05dc\u05d3\u05d0\u05d5\u05d2 \u05dc\u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05d9\u05d4\u05d9\u05d4 \u05dc\u05d4\u05e8\u05d7\u05d9\u05d1 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d4\u05d5\u05e1\u05e4\u05ea \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05d7\u05d3\u05e9\u05d4 \u05e2\u05dc \u05e4\u05d9 \u05d4\u05e6\u05e8\u05db\u05d9\u05dd \u05d4\u05e2\u05ea\u05d9\u05d3\u05d9\u05d9\u05dd, \u05d0\u05da \u05dc\u05e2\u05e9\u05d5\u05ea \u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05e9\u05e0\u05e6\u05d8\u05e8\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd. \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05e6\u05d5\u05e8\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d9\u05e6\u05d9\u05e8\u05ea \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d4\u05d9\u05d5\u05e8\u05e9\u05d5\u05ea \u05de-`Shape` \u05d5\u05de\u05d9\u05d9\u05e9\u05de\u05d5\u05ea \u05d0\u05ea \u05d4\u05e9\u05d9\u05d8\u05d4 `Area`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d1\u05db\u05dc \u05e4\u05e2\u05dd \u05e9\u05d0\u05ea\u05d4 \u05de\u05d5\u05e1\u05d9\u05e3 \u05ea\u05db\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05d0\u05ea\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05d5\u05d3 \u05d4\u05e7\u05d9\u05d9\u05dd \u05d1\u05d0\u05d5\u05e4\u05df \u05de\u05e9\u05de\u05e2\u05d5\u05ea\u05d9, \u05e1\u05d1\u05d9\u05e8 \u05dc\u05d4\u05e0\u05d9\u05d7 \u05e9\u05d0\u05ea\u05d4 \u05de\u05e4\u05e8 \u05d0\u05ea OCP. \u05d5\u05d2\u05dd \u2013 \u05d0\u05dd \u05d0\u05ea\u05d4 \u05e8\u05d5\u05d0\u05d4 \u05ea\u05dc\u05d5\u05ea \u05d9\u05e9\u05d9\u05e8\u05d4 \u05d1\u05d9\u05df \u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05db\u05da \u05e9\u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d4 \u05d0\u05d7\u05ea \u05de\u05d7\u05d9\u05d9\u05d1 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05ea \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d9\u05e9 \u05e4\u05d4 \u05d4\u05e4\u05e8\u05d4 \u05e9\u05dc OCP. Liskov Substitution Principle (LSP) \u05d1\u05e8\u05d1\u05e8\u05d4 \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (Barbara Liskov) \u05d4\u05d9\u05d0 \u05de\u05d3\u05e2\u05e0\u05d9\u05ea \u05de\u05d7\u05e9\u05d1 \u05d0\u05de\u05e8\u05d9\u05e7\u05d0\u05d9\u05ea, \u05d0\u05d7\u05ea \u05d4\u05d3\u05de\u05d5\u05d9\u05d5\u05ea \u05d4\u05de\u05e9\u05e4\u05d9\u05e2\u05d5\u05ea \u05d1\u05d9\u05d5\u05ea\u05e8 \u05d1\u05ea\u05d7\u05d5\u05dd \u05de\u05d3\u05e2\u05d9 \u05d4\u05de\u05d7\u05e9\u05d1 \u05d5\u05d4\u05e0\u05d3\u05e1\u05ea \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05d6\u05d5\u05db\u05ea \u05e4\u05e8\u05e1 \u05d8\u05d9\u05d5\u05e8\u05d9\u05e0\u05d2 \u05d1\u05e9\u05e0\u05ea 2008 . \u05dc\u05e6\u05d9\u05d1\u05d5\u05e8 \u05d4\u05de\u05ea\u05db\u05e0\u05ea\u05d9\u05dd \u05d4\u05d9\u05d0 \u05d9\u05d3\u05d5\u05e2\u05d4 \u05d1\u05e2\u05d9\u05e7\u05e8 \u05de\u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05e0\u05e7\u05e8\u05d0 \u05e2\u05dc \u05e9\u05de\u05d4. \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d1\u05e1\u05d9\u05e1 \u05e6\u05e8\u05d9\u05db\u05d5\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05d1\u05e2\u05dc\u05d5\u05ea \u05d9\u05db\u05d5\u05dc\u05ea \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d7\u05dc\u05e4\u05d5\u05ea \u05d1\u05de\u05d7\u05dc\u05e7\u05d5\u05ea \u05d4\u05e0\u05d2\u05d6\u05e8\u05d5\u05ea \u05de\u05d4\u05df, \u05d5\u05d6\u05d0\u05ea \u05de\u05d1\u05dc\u05d9 \u05dc\u05e9\u05d1\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05ea\u05d5\u05db\u05e0\u05d4. \u05d3\u05d5\u05d2\u05de\u05d0: \u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 \u05d0\u05e0\u05d7\u05e0\u05d5 &#8220;\u05db\u05d5\u05e4\u05d9\u05dd&#8221; \u05e2\u05dc \u05d9\u05e2\u05e0\u05d9\u05dd \u05dc\u05e2\u05d5\u05e3&#8230; \u05d2\u05dd \u05d0\u05dd \u05e0\u05d8\u05de\u05d5\u05df \u05d0\u05ea \u05d4\u05e8\u05d0\u05e9 \u05d1\u05d7\u05d5\u05dc, \u05d6\u05d4 \u05dc\u05d0 \u05d9\u05e2\u05d1\u05d5\u05d3. \u05ea\u05d4\u05d9\u05d4 \u05e9\u05d2\u05d9\u05d0\u05d4. \u05d5\u05dc\u05db\u05df, \u05db\u05d3\u05d9 \u05dc\u05d4\u05d9\u05de\u05e0\u05e2 \u05de\u05e9\u05d1\u05d9\u05e8\u05ea LSP, \u05d9\u05e9 \u05dc\u05e9\u05e0\u05d5\u05ea \u05d0\u05ea \u05d4\u05ea\u05db\u05e0\u05d5\u05df \u05db\u05da \u05e9\u05de\u05d7\u05dc\u05e7\u05ea `Ostrich` \u05dc\u05d0 \u05ea\u05d9\u05e8\u05e9 \u05de-`Bird`, \u05d0\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05d6\u05d5 \u05d0\u05d9\u05e0\u05d4 \u05d4\u05d2\u05d9\u05d5\u05e0\u05d9\u05ea. \u05db\u05d3\u05d9 \u05dc\u05ea\u05e7\u05df \u05d0\u05ea \u05d4\u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05db\u05da \u05e9\u05e0\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05e2\u05e7\u05e8\u05d5\u05df \u05d4\u05d4\u05d7\u05dc\u05e4\u05d4 \u05e9\u05dc \u05dc\u05d9\u05e1\u05e7\u05d5\u05d1 (LSP), &nbsp;\u05e0\u05d1\u05e6\u05e2 \u05d0\u05ea \u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d4\u05d1\u05d0\u05d9\u05dd: \u05d1\u05de\u05e7\u05d5\u05dd \u05e9\u05d4\u05de\u05d7\u05dc\u05e7\u05d4 Ostrich \u00a0\u05ea\u05d9\u05e8\u05e9 \u05de-Bird \u05e0\u05d9\u05e6\u05d5\u05e8 \u05d4\u05d9\u05e8\u05e8\u05db\u05d9\u05d4 \u05d7\u05d3\u05e9\u05d4 \u05e9\u05d1\u05d4 \u05dc\u05db\u05dc \u05d4\u05e6\u05d9\u05e4\u05d5\u05e8\u05d9\u05dd \u05d9\u05e9 \u05e4\u05e2\u05d5\u05dc\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea \u05e9\u05dc Move \u00a0\u00a0\u05d1\u05de\u05e7\u05d5\u05dd \u05e4\u05e2\u05d5\u05dc\u05d4 \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05ea \u05e9\u05dc Fly. \u05db\u05dc \u05e6\u05d9\u05e4\u05d5\u05e8 \u05ea\u05d9\u05d9\u05e9\u05dd \u05d0\u05ea \u05d4\u05e4\u05e2\u05d5\u05dc\u05d4 \u05d4\u05d6\u05d5 \u05d1\u05d3\u05e8\u05db\u05d4 \u05e9\u05dc\u05d4. \u05d4\u05e0\u05d4 \u05d3\u05d5\u05d2\u05de\u05d0 \u05dc\u05e7\u05d5\u05d3 \u05de\u05ea\u05d5\u05e7\u05df: \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05e7\u05d5\u05d3 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05ea\u05e0\u05d0\u05d9\u05dd \u05dc\u05d1\u05d3\u05d9\u05e7\u05ea \u05e1\u05d5\u05d2 \u05d4\u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8 \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05d7\u05dc\u05d9\u05d8 \u05dc\u05d0\u05d9\u05d6\u05d4 \u05de\u05ea\u05d5\u05d3\u05d4 \u05dc\u05e7\u05e8\u05d5\u05d0, \u05e7\u05e8\u05d5\u05d1 \u05dc\u05d5\u05d5\u05d3\u05d0\u05d9 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea LSP. Interface Segregation Principle (ISP) \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d6\u05d4 \u05e7\u05d5\u05d1\u05e2 \u05e9\u05d9\u05e9 \u05dc\u05e4\u05e6\u05dc \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05d2\u05d3\u05d5\u05dc\u05d9\u05dd \u05dc\u05de\u05e1\u05e4\u05e8 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1\u05d9\u05dd \u05e7\u05d8\u05e0\u05d9\u05dd \u05d5\u05e1\u05e4\u05e6\u05d9\u05e4\u05d9\u05d9\u05dd, \u05db\u05da \u05e9\u05d4-client &nbsp;\u05dc\u05d0 \u05d9\u05d4\u05d9\u05d4 \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d9\u05d9\u05e9\u05dd \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea \u05e9\u05d0\u05d9\u05e0\u05df \u05e0\u05d3\u05e8\u05e9\u05d5\u05ea \u05dc\u05d5. \u05d1\u05d3\u05d5\u05d2\u05de\u05d0 \u05d4\u05d6\u05d5 &nbsp;`SimplePrinter` \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05e8\u05e7 \u05d0\u05ea `IPrinter`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc\u05db\u05dd \u05de\u05db\u05d9\u05dc \u05d9\u05d5\u05ea\u05e8 \u05de\u05d3\u05d9 \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05db\u05da \u05e9\u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05e9\u05de\u05d9\u05d9\u05e9\u05de\u05d9\u05dd \u05d0\u05d5\u05ea\u05d5 \u05e6\u05e8\u05d9\u05da \u05dc\u05d9\u05d9\u05e9\u05dd \u05d1\u05d9\u05df \u05d4\u05e9\u05d0\u05e8 \u05d2\u05dd \u05de\u05ea\u05d5\u05d3\u05d5\u05ea \u05e9\u05e0\u05d5\u05ea\u05e8\u05d5\u05ea \u05dc\u05dc\u05d0 \u05e9\u05d9\u05de\u05d5\u05e9 \u2013 \u05db\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea ISP. Dependency Inversion Principle (DIP) \u05d4\u05e8\u05d1\u05d4 \u05de\u05d3\u05d1\u05e8\u05d9\u05dd \u05e2\u05dc \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea \u05d1\u05de\u05d3\u05d9\u05e0\u05d4, \u05d0\u05d1\u05dc \u05d2\u05dd \u05d1\u05e7\u05d5\u05d3 \u05d6\u05d4 \u05db\u05db\u05d4. \u05db\u05d3\u05d9 \u05e9\u05e7\u05d5\u05d3 \u05d9\u05d4\u05d9\u05d4 \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7\u05d4 \u05d5\u05dc\u05d4\u05e8\u05d7\u05d1\u05d4 \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05e9\u05de\u05e8 \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05e4\u05e8\u05d3\u05ea \u05d4\u05e8\u05e9\u05d5\u05d9\u05d5\u05ea. \u05d7\u05dc\u05e7\u05d9 \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e6\u05e8\u05d9\u05db\u05d9\u05dd \u05dc\u05d4\u05d9\u05d5\u05ea \u05db\u05de\u05d4 \u05e9\u05e4\u05d7\u05d5\u05ea \u05e6\u05de\u05d5\u05d3\u05d9\u05dd (coupled) \u05d0\u05d7\u05d3 \u05dc\u05e9\u05e0\u05d9. \u05d0\u05d7\u05d3 \u05d4\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05e9\u05e2\u05d5\u05d6\u05e8\u05d9\u05dd \u05dc\u05e0\u05d5 \u05d1\u05d6\u05d4 \u05d4\u05d5\u05d0 Dependecy Inversion Principle, \u05e2\u05d9\u05e7\u05e8\u05d5\u05df \u05d4\u05d9\u05e4\u05d5\u05da \u05d4\u05ea\u05dc\u05d5\u05ea. \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d4-DIP \u05d0\u05dd \u05dc\u05de\u05e9\u05dc \u05d9\u05d4\u05d9\u05d4 \u05dc\u05e0\u05d5 \u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05e9\u05dc \u05dc\u05d5\u05d2\u05d9\u05dd \u05d5\u05db\u05de\u05d4 \u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd \u05e9\u05dc\u05d5 \u05d1\u05d0\u05d5\u05e4\u05df \u05d4\u05d6\u05d4: \u05e0\u05d5\u05db\u05dc \u05d1\u05e7\u05dc\u05d9\u05d9\u05e0\u05d8 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05d0\u05d9\u05d6\u05d4 \u05de\u05d9\u05de\u05d5\u05e9 \u05e9\u05e0\u05e8\u05e6\u05d4 \u05de\u05db\u05d9\u05d5\u05d5\u05df \u05e9\u05d4\u05d5\u05d0 \u05de\u05e7\u05d1\u05dc \u05d1\u05e7\u05d5\u05e0\u05e1\u05d8\u05e8\u05e7\u05d8\u05d5\u05e8 \u05e9\u05dc\u05d5 \u05d0\u05ea \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e4\u05d9\u05d9\u05e1 \u05d1\u05de\u05e7\u05e8\u05d4 \u05d6\u05d4, `UserService` \u05dc\u05d0 \u05ea\u05dc\u05d5\u05d9 \u05d1\u05d9\u05d9\u05e9\u05d5\u05dd \u05e1\u05e4\u05e6\u05d9\u05e4\u05d9 \u05e9\u05dc `ILogger` \u05d0\u05dc\u05d0 \u05d1\u05de\u05de\u05e9\u05e7, \u05db\u05da \u05e9\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d7\u05dc\u05d9\u05e3 \u05d0\u05ea \u05d4\u05dc\u05d5\u05d2\u05e8\u05d9\u05dd \u05dc\u05dc\u05d0 \u05e9\u05d9\u05e0\u05d5\u05d9 \u05d1\u05e7\u05d5\u05d3 \u05e9\u05dc `UserService`. \u05d8\u05d9\u05e4: \u05d0\u05dd \u05e7\u05e9\u05d4 \u05dc\u05db\u05dd \u05dc\u05db\u05ea\u05d5\u05d1 \u05d8\u05e1\u05d8\u05d9\u05dd \u05dc\u05e7\u05dc\u05d0\u05e1 \u05d0\u05d5 \u05dc\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d4 \u05d1\u05d2\u05dc\u05dc \u05e9\u05d4\u05d9\u05d0 \u05ea\u05dc\u05d5\u05d9\u05d4 \u05d1\u05de\u05d9\u05de\u05d5\u05e9\u05d9\u05dd \u05e7\u05d5\u05e0\u05e7\u05e8\u05d8\u05d9\u05d9\u05dd \u05e9\u05dc \u05e7\u05dc\u05d0\u05e1\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd, \u05d1\u05d4\u05d7\u05dc\u05d8 \u05d9\u05ea\u05db\u05df \u05e9\u05d4\u05e4\u05e8\u05ea\u05dd \u05d0\u05ea DIP. _______________________________________________________________________________________________________________ \u05d6\u05d5\u05d4\u05d9 \u05d8\u05e2\u05d9\u05de\u05d4 \u05e2\u05dc \u05e7\u05e6\u05d4 \u05d4\u05de\u05d6\u05dc\u05d2 \u05e9\u05dc \u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID. \u05de\u05d9 \u05e9\u05d9\u05e7\u05e4\u05d9\u05d3 \u05e2\u05dc\u05d9\u05d4\u05dd \u05d1\u05d6\u05de\u05df \u05db\u05ea\u05d9\u05d1\u05ea \u05d4\u05e7\u05d5\u05d3, \u05d9\u05e8\u05d5\u05d5\u05d9\u05d7 \u05e7\u05d5\u05d3 \u05e7\u05e8\u05d9\u05d0 \u05d9\u05d5\u05ea\u05e8, \u05e7\u05dc \u05dc\u05ea\u05d7\u05d6\u05d5\u05e7 \u05d5\u05dc\u05d1\u05d3\u05d9\u05e7\u05d4 \u05d5\u05de\u05d4\u05d9\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05dc\u05d4\u05d5\u05e1\u05e4\u05d5\u05ea \u05d5\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d8\u05d5\u05d5\u05d7 \u05d4\u05e8\u05d7\u05d5\u05e7.","og_url":"https:\/\/hernan-yehuda.net\/?p=206","og_site_name":"Design for Living","article_published_time":"2024-07-08T14:48:07+00:00","article_modified_time":"2024-07-08T14:48:08+00:00","author":"Hernan","twitter_card":"summary_large_image","twitter_misc":{"\u05e0\u05db\u05ea\u05d1 \u05e2\u05dc \u05d9\u05d3":"Hernan","\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da":"2 \u05d3\u05e7\u05d5\u05ea"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hernan-yehuda.net\/?p=206#article","isPartOf":{"@id":"https:\/\/hernan-yehuda.net\/?p=206"},"author":{"name":"Hernan","@id":"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64"},"headline":"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd","datePublished":"2024-07-08T14:48:07+00:00","dateModified":"2024-07-08T14:48:08+00:00","mainEntityOfPage":{"@id":"https:\/\/hernan-yehuda.net\/?p=206"},"wordCount":342,"commentCount":4,"publisher":{"@id":"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64"},"keywords":["Clean Code","Design Patterns","DEV","SOLID"],"articleSection":["#C","Design Patterns","SOLID"],"inLanguage":"he-IL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/hernan-yehuda.net\/?p=206#respond"]}]},{"@type":"WebPage","@id":"https:\/\/hernan-yehuda.net\/?p=206","url":"https:\/\/hernan-yehuda.net\/?p=206","name":"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd - Design for Living","isPartOf":{"@id":"https:\/\/hernan-yehuda.net\/#website"},"datePublished":"2024-07-08T14:48:07+00:00","dateModified":"2024-07-08T14:48:08+00:00","breadcrumb":{"@id":"https:\/\/hernan-yehuda.net\/?p=206#breadcrumb"},"inLanguage":"he-IL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hernan-yehuda.net\/?p=206"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/hernan-yehuda.net\/?p=206#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u05d3\u05e3 \u05d4\u05d1\u05d9\u05ea","item":"https:\/\/hernan-yehuda.net\/"},{"@type":"ListItem","position":2,"name":"\u05e2\u05e7\u05e8\u05d5\u05e0\u05d5\u05ea SOLID \u05d1\u05ea\u05db\u05e0\u05d5\u05ea \u05de\u05d5\u05e0\u05d7\u05d4 \u05e2\u05e6\u05de\u05d9\u05dd"}]},{"@type":"WebSite","@id":"https:\/\/hernan-yehuda.net\/#website","url":"https:\/\/hernan-yehuda.net\/","name":"\u05d0\u05e8\u05e0\u05df \u05de\u05d9\u05d9\u05e1\u05dc\u05e1","description":"","publisher":{"@id":"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hernan-yehuda.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"he-IL"},{"@type":["Person","Organization"],"@id":"https:\/\/hernan-yehuda.net\/#\/schema\/person\/0f06727fd57f92683c3ad425a9ecaf64","name":"Hernan","image":{"@type":"ImageObject","inLanguage":"he-IL","@id":"https:\/\/hernan-yehuda.net\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fccf8cf4fc450b691c936a8d8435a7531aebd25301f198fe852050983a235aef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fccf8cf4fc450b691c936a8d8435a7531aebd25301f198fe852050983a235aef?s=96&d=mm&r=g","caption":"Hernan"},"logo":{"@id":"https:\/\/hernan-yehuda.net\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/hernan-yehuda.net"]}]}},"_links":{"self":[{"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=\/wp\/v2\/posts\/206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=206"}],"version-history":[{"count":26,"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=\/wp\/v2\/posts\/206\/revisions"}],"predecessor-version":[{"id":232,"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=\/wp\/v2\/posts\/206\/revisions\/232"}],"wp:attachment":[{"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hernan-yehuda.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}