>  기사  >  백엔드 개발  >  C#으로 개방-폐쇄 원칙을 구현하는 방법은 무엇입니까?

C#으로 개방-폐쇄 원칙을 구현하는 방법은 무엇입니까?

王林
王林앞으로
2023-08-26 20:33:111419검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제