Softwareeinheiten wie Klassen, Module und Funktionen sollten für Erweiterungen offen, für Änderungen jedoch geschlossen sein.
Definition – Das Open-Closed-Prinzip besagt, dass das Design und Schreiben von Code so erfolgen sollte, dass minimale Änderungen am vorhandenen Code vorgenommen werden, um neue Funktionen hinzuzufügen. Das Design sollte so gestaltet sein, dass neue Funktionen als neue Klassen hinzugefügt werden können, während der vorhandene Code so weit wie möglich unverändert bleibt.
Codeprinzip vor Öffnen und Schließen
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; } } }
Code nach OpenClosed-Prinzip
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; } } }
Das obige ist der detaillierte Inhalt vonWie implementiert man das Open-Close-Prinzip mit C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!