/// <summary> /// 是否相等 /// </summary> /// <param name="electric"></param> /// <returns></returns> public bool IsEqual(IElectric electric) { if (m_quantity == electric.Quantity && m_position == electric.Position) { return(true); } else { return(false); } }
public static void Main(string[] args) { // Register car factories with factory finder CarInstaller.install(); // Access factory finder var finder = FactoryFinder.getInstance(); try { IFactory factory = null; IDiesel dCar = null; IElectric eCar = null; IHybrid hCar = null; factory = finder.findFactory(InterfaceID.ID_Diesel); dCar = (IDiesel)factory.create(); dCar.fuel(); factory = finder.findFactory(InterfaceID.ID_Electric); eCar = (IElectric)factory.create(); eCar.charge(); factory = finder.findFactory(InterfaceID.ID_Hybrid); dCar = (IDiesel)factory.create(); dCar.fuel(); eCar = (IElectric)dCar.getExtension(InterfaceID.ID_Electric); eCar.charge(); factory = finder.findFactory(InterfaceID.ID_Hybridic); hCar = (IHybrid)factory.create(); hCar.fuel(); hCar.charge(); // oder mit Rollenwechsel ICar car = null; factory = finder.findFactory(InterfaceID.ID_Hybrid); // supports only IDiesel und IElectric car = factory.create(); ((IDiesel)car).fuel(); ((IElectric)car).charge(); car = car.getExtension(InterfaceID.ID_Diesel); // Role ID_Diesel ((IDiesel)car).fuel(); car = car.getExtension(InterfaceID.ID_Electric); // Role ID_Electric ((IElectric)car).charge(); // car = car.getExtension(InterfaceID.ID_Hybrid); // UnknownExtensionException: IHybrid not supported // ((IDiesel) car).fuel(); // ((IElectric) car).charge(); // car = car.getExtension(InterfaceID.ID_Hybridic); // UnknownExtensionException: IHybridic not supported // ((IHybrid) car).fuel(); // ((IHybrid) car).charge(); /* Result * * Filled up with Diesel * Charged with Electricity * Filled up with Diesel * Charged with Electricity * Filled up with Diesel * Charged with Electricity * Filled up with Diesel * Charged with Electricity * Filled up with Diesel * Charged with Electricity * */ } catch (UnknownExtensionException ex) { Console.WriteLine(ex); throw; } }
/// <summary> /// 生产单根电场线绘制器 /// </summary> /// <param name="startPoint">起点</param> /// <param name="parent">父物体</param> /// <param name="delta">步进值</param> /// <param name="minDistance">最小距离</param> /// <param name="maxDistance">最大距离</param> /// <param name="genertateElectic">生成该电场线的点电荷</param> /// <param name="electricsList">所有的点电荷</param> /// <returns></returns> private IFieldLineRenderer CreateFieldLineRender(Vector3 startPoint, Transform parent, float delta, float minDistance, float maxDistance, IElectric genertateElectic, List <Transform> electricsList) { var obj = Resources.Load <GameObject>(FL_RENDERER_PATH); if (obj == null) { throw new System.Exception("Wrong Path :" + FL_RENDERER_PATH); } var renderer = Instantiate(obj, startPoint, Quaternion.identity, parent).GetComponent <IFieldLineRenderer>(); renderer.SetDelta(delta); //renderer.SetMaximumIntensity(max_Intensity); //renderer.SetMinimumIntensity(min_intensity); renderer.SetMinDistance(minDistance); renderer.SetMaxDistance(maxDistance); renderer.SetGenertateElectric(genertateElectic.transform); renderer.SetSign(Mathf.Sign(genertateElectic.Quantity)); renderer.SetElectricsList(electricsList); return(renderer); }
/// <summary> /// 记录状态 /// </summary> private void RecordStatus() { m_electric_LastRecord = (IElectric)this.Clone(); }
/// <summary> /// 将对应带电体移除List /// </summary> /// <param name="electric"></param> public static void Remove(IElectric electric) { s_electricList.Remove(electric); electric.StatusChanged.RemoveListener(OnStatusChanged); }
/// <summary> /// 将对应带电体加入List当中 /// </summary> /// <param name="electric"></param> public static void Add(IElectric electric) { s_electricList.Add(electric); electric.StatusChanged.AddListener(OnStatusChanged); }