ホームページ >バックエンド開発 >C#.Net チュートリアル >C# でオープンクローズ原則を実装するにはどうすればよいですか?

C# でオープンクローズ原則を実装するにはどうすればよいですか?

王林
王林転載
2023-08-26 20:33:111478ブラウズ

C# でオープンクローズ原則を実装するにはどうすればよいですか?

クラス、モジュール、関数などのソフトウェア エンティティは、拡張にはオープンですが、変更にはクローズされる必要があります。

定義 - オープンクローズ原則では、新しい機能を追加するために既存のコードに最小限の変更を加えるようにコードの設計と記述を行う必要があると述べています。設計は、既存のコードを可能な限り変更せずに、新しい機能を新しいクラスとして追加できるように行う必要があります。

開閉前のコード原則

using System;
using System.Net.Mail;
namespace SolidPrinciples.Open.Closed.Principle.Before{
   public class Rectangle{
      public int Width { get; set; }
      public int Height { get; set; }
   }
   public class CombinedAreaCalculator{
      public double Area (object[] shapes){
         double area = 0;
         foreach (var shape in shapes){
            if(shape is Rectangle){
               Rectangle rectangle = (Rectangle)shape;
               area += rectangle.Width * rectangle.Height;
            }
         }
         return area;
      }
   }
   public class Circle{
      public double Radius { get; set; }
   }
   public class CombinedAreaCalculatorChange{
      public double Area(object[] shapes){
         double area = 0;
         foreach (var shape in shapes){
            if (shape is Rectangle){
               Rectangle rectangle = (Rectangle)shape;
               area += rectangle.Width * rectangle.Height;
            }
            if (shape is Circle){
               Circle circle = (Circle)shape;
               area += (circle.Radius * circle.Radius) * Math.PI;
            }
         }
         return area;
      }
   }
}

OpenClosed原則後のコード

namespace SolidPrinciples.Open.Closed.Principle.After{
   public abstract class Shape{
      public abstract double Area();
   }
   public class Rectangle: Shape{
      public int Width { get; set; }
      public int Height { get; set; }
      public override double Area(){
         return Width * Height;
      }
   }
   public class Circle : Shape{
      public double Radius { get; set; }
      public override double Area(){
         return Radius * Radius * Math.PI;
      }
   }
   public class CombinedAreaCalculator{
      public double Area (Shape[] shapes){
         double area = 0;
         foreach (var shape in shapes){
            area += shape.Area();
         }
         return area;
      }
   }
}

以上がC# でオープンクローズ原則を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。