过滤器模式
1 从数据里面找出想要的某些数据,逻辑相对简单,也很常见,没什么好说的。
2 这里面唯一的一点东西是,得出的数据进行并/或运算.也没啥,,
public abstract class Vehicle
{
public abstract Scope UseScope();
public enum Scope {
Land,
Air,
Water
}
}
public class Car : Vehicle
{
public override Scope UseScope()
{
return Scope.Land;
}
}
public class Plane : Vehicle
{
public override Scope UseScope()
{
return Scope.Air;
}
}
public class Ship : Vehicle
{
public override Scope UseScope()
{
return Scope.Water;
}
}
public class VehicleUtil
{
public static List<Vehicle> GetAirVehicle(List<Vehicle> vehicles)
{
var result = new List<Vehicle>();
foreach(var vehicle in vehicles)
{
if(vehicle.UseScope() == Scope.Air)
{
result.Add(vehicle);
}
}
return result;
}
public static List<Vehicle> GetLandVehicle(List<Vehicle> vehicles)
{
var result = new List<Vehicle>();
foreach (var vehicle in vehicles)
{
if (vehicle.UseScope() == Scope.Land)
{
result.Add(vehicle);
}
}
return result;
}
public static List<Vehicle> GetWaterVehicle(List<Vehicle> vehicles)
{
var result = new List<Vehicle>();
foreach (var vehicle in vehicles)
{
if (vehicle.UseScope() == Scope.Water)
{
result.Add(vehicle);
}
}
return result;
}
}
public class FilterPattern
{
public static void TestFilter()
{
List<Vehicle> vehicles = new List<Vehicle>();
vehicles.Add(new Car());
vehicles.Add(new Ship());
vehicles.Add(new Plane());
var airVehicles = VehicleUtil.GetAirVehicle(vehicles);
var landVehicles = VehicleUtil.GetLandVehicle(vehicles);
var waterVehicles = VehicleUtil.GetWaterVehicle(vehicles);
}
}