/*
* User: Administrator
* Date: 2007-7-2 Time: 14:29
* 状态模式
*/
using System;
namespace AirCondition
{
public abstract class AirCondition{
public AirCondition(){
}
protected double targetTemp;
public double TargetTemp{
get { return targetTemp;}
set {targetTemp = value;}
}
// 空调启动,输入目标温度和环境温度,输出功率
public abstract double DO( double ttemp, double etemp);
}
public class CoolAirCondition:AirCondition{
public CoolAirCondition(){}
// 冷空调,当环境温度高于设置温度的时候,工作
public override double DO( double ttemp, double etemp){
if (ttemp > etemp) return 0 ;
return (etemp - ttemp) * 200 ;
}
}
public class HotAirCondition:AirCondition{
public HotAirCondition(){}
// 暖空调,环境温度低于设置温度时工作
public override double DO( double ttemp, double etemp){
if (ttemp < etemp) return 0 ;
return (ttemp - etemp) * 150 ;
}
}
public class NoAirCondition:AirCondition{
public NoAirCondition(){}
// 不工作
public override double DO( double ttemp, double etemp){
return 0 ;
}
}
public class AirConditionControl{
private AirCondition hot,cool,non,current;
public AirConditionControl(){
hot = new HotAirCondition();
cool = new CoolAirCondition();
non = new NoAirCondition();
}
public double UpTemp,DownTemp,TargetTemp;
public string CurrentType{
get { return current.GetType().Name;}
}
public double Do( double evtemp)
{
if (evtemp > UpTemp) current = cool;
else if (evtemp < DownTemp) current = hot;
else current = non;
return current.DO(TargetTemp,evtemp);
}
}
public class MainClass
{
public static void Main()
{
AirConditionControl test = new AirConditionControl();
test.UpTemp = 100 ;
test.DownTemp = 40 ;
test.TargetTemp = 80 ;
System.Console.WriteLine(test.Do( 120 ));
System.Console.WriteLine(test.CurrentType);
System.Console.WriteLine(test.Do( 20 ));
System.Console.WriteLine(test.CurrentType);
System.Console.WriteLine(test.Do( 80 ));
System.Console.WriteLine(test.CurrentType);
System.Console.ReadLine();
}
}
}
* User: Administrator
* Date: 2007-7-2 Time: 14:29
* 状态模式
*/
using System;
namespace AirCondition
{
public abstract class AirCondition{
public AirCondition(){
}
protected double targetTemp;
public double TargetTemp{
get { return targetTemp;}
set {targetTemp = value;}
}
// 空调启动,输入目标温度和环境温度,输出功率
public abstract double DO( double ttemp, double etemp);
}
public class CoolAirCondition:AirCondition{
public CoolAirCondition(){}
// 冷空调,当环境温度高于设置温度的时候,工作
public override double DO( double ttemp, double etemp){
if (ttemp > etemp) return 0 ;
return (etemp - ttemp) * 200 ;
}
}
public class HotAirCondition:AirCondition{
public HotAirCondition(){}
// 暖空调,环境温度低于设置温度时工作
public override double DO( double ttemp, double etemp){
if (ttemp < etemp) return 0 ;
return (ttemp - etemp) * 150 ;
}
}
public class NoAirCondition:AirCondition{
public NoAirCondition(){}
// 不工作
public override double DO( double ttemp, double etemp){
return 0 ;
}
}
public class AirConditionControl{
private AirCondition hot,cool,non,current;
public AirConditionControl(){
hot = new HotAirCondition();
cool = new CoolAirCondition();
non = new NoAirCondition();
}
public double UpTemp,DownTemp,TargetTemp;
public string CurrentType{
get { return current.GetType().Name;}
}
public double Do( double evtemp)
{
if (evtemp > UpTemp) current = cool;
else if (evtemp < DownTemp) current = hot;
else current = non;
return current.DO(TargetTemp,evtemp);
}
}
public class MainClass
{
public static void Main()
{
AirConditionControl test = new AirConditionControl();
test.UpTemp = 100 ;
test.DownTemp = 40 ;
test.TargetTemp = 80 ;
System.Console.WriteLine(test.Do( 120 ));
System.Console.WriteLine(test.CurrentType);
System.Console.WriteLine(test.Do( 20 ));
System.Console.WriteLine(test.CurrentType);
System.Console.WriteLine(test.Do( 80 ));
System.Console.WriteLine(test.CurrentType);
System.Console.ReadLine();
}
}
}