Patrón de diseño:
resuelva el problema de los requisitos cambiantes (se usa cuando tiene una comprensión más profunda del software o las relaciones entre módulos).
Relación de acoplamiento entre módulos:
(La relación de acoplamiento determina directamente el comportamiento del software ante cambios)
[División de módulos, saber qué ha cambiado y qué no]
Relación entre módulos
(1) Acoplamiento estrecho: Cuando un módulo cambia , todos los módulos relacionados Cambio (2) Acoplamiento
flojo: algunos módulos son más fáciles de reemplazar o cambiar, pero otros módulos siguen siendo los mismos . o los módulos se pueden separar claramente Relación primaria y secundaria y relación de detalle abstracto .
Módulo principal (lógica principal): cambia lentamente o permanece sin cambios [abstracción de alto nivel]
módulo secundario (interfaz + implementación): cambia rápidamente [detalles de nivel inferior]
Modo de fábrica:
se está creando un objeto: debido a cambios en los requisitos, la implementación específica del objeto a menudo enfrenta cambios drásticos, pero la interfaz es estable.
Estructura (combinada con el código es más fácil de entender):
ejemplo de implementación de código:
escena, estructura del automóvil y automóvil de prueba
1. Clase abstracta de automóvil:
public abstract class AbstractCar
{
public abstract void Startup();
public abstract void Run();
public abstract void Turn();
public abstract void Stop();
}
2. Fábrica de coches abstractos
public abstract class CarFactory
{
public abstract AbstractCar CreateCar();
}
3. Vehículos específicos de la marca Hongqi y fábricas de vehículos específicos de Hongqi
public class HongQiCar:AbstractCar//具体实现车
{
private int Speed;
public override void Startup()
{
}
public override void Run()
{
}
public override void Turn()
{
}
public override void Stop()
{
}
}
public class HongQICarFactory:CarFactory//具体工厂
{
public override AbstractCar CreateCar()
{
return new HongQiCar();
}
}
3. Marco de pruebas de vehículos
public class CarTestFramework
{
public void BuildContext(CarFactory carFactory)//依赖接口
{
//需要多个实例
AbstractCar c1 = carFactory.CreateCar();
AbstractCar c2 = carFactory.CreateCar();
AbstractCar c3 = carFactory.CreateCar();
}
public void DoTest()
{
}
public void GetTestData()
{
}
}
4. Llamada de función principal
public static void Main(string[] args)
{
CarTestFramework carTestFramework = new CarTestFramework();
carTestFramework.BuildContext(new HongQICarFactory());
}
Puntos principales: