Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan prinsip buka-tutup dengan C#?

Bagaimana untuk melaksanakan prinsip buka-tutup dengan C#?

王林
王林ke hadapan
2023-08-26 20:33:111419semak imbas

Bagaimana untuk melaksanakan prinsip buka-tutup dengan C#?

Entiti perisian seperti kelas, modul dan fungsi harus dibuka untuk sambungan tetapi ditutup untuk pengubahsuaian.

Definisi - Prinsip tertutup terbuka menyatakan bahawa reka bentuk dan penulisan kod harus dilakukan sedemikian rupa sehingga perubahan minimum dibuat pada kod sedia ada untuk menambah fungsi baharu. Reka bentuk harus direka bentuk dengan cara yang membolehkan fungsi baharu ditambah sebagai kelas baharu, sambil memastikan kod sedia ada tidak berubah sebanyak mungkin.

Contoh

Prinsip kod sebelum buka dan tutup

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;
      }
   }
}

Kod selepas prinsip 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;
      }
   }
}

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan prinsip buka-tutup dengan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam