工厂设计模式
其实大家都知道一个工厂:它可以生产出同一个类型的产品的不同型号,我现在是一个需要工厂来提供帮助的产品,我只需要告诉工厂,我需要哪一个产品,而不关心那个产品具体是怎样实现的。我关心的是给我提供一个需要的工厂产品。
我以C#的一个简单例子来讲解工厂模式(设计模式的思路是解决重用性问题和抽象问题):
public class _base
{
public virtual DateTime get_date()
{
return DateTime.Now;
}
}
//获取的是以天为基础
public class base_1 :_base
{
int set_day;
public base_1(int date)
{
set_day = date;
}
public override DateTime get_date()
{
return DateTime.Now.AddDays(set_day);
}
}
//获取的是以月为基础的时间
public class base_2:_base
{
int set_day;
public base_2(int month)
{
set_day = month;
}
public override DateTime get_date()
{
return DateTime.Now.AddMonths(set_day);
}
}
//获取以星期为基础的时间
public class base_3:_base
{
int set_day;
public base_3(int week)
{
set_day = week * 7;
}
public override DateTime get_date()
{
return DateTime.Now.AddMonths(set_day);
}
}
//获取以年为基础的时间
public class base_4:_base
{
int set_day;
public base_4(int year)
{
set_day = year;
}
public override DateTime get_date()
{
return DateTime.Now.AddYears(set_day);
}
}
//获取的是以小时为基础的过去的时间
public class base_5 : _base
{
int set_day;
public base_5(int hours)
{
set_day = hours;
}
public override DateTime get_date()
{
return DateTime.Now.AddHours(set_day);
}
}
public class GateDate
{
private _base nw;
public GateDate(int type,int date)
{
switch(type)
{
case 1:
{
nw = new base_1(date);
break;
}
case 2:
{
nw = new base_2(date);
break;
}
case 3:
{
nw = new base_3(date);
break;
}
case 4:
{
nw = new base_4(date);
break;
}
case 5:
{
nw = new base_5(date);
break;
}
}
}
public DateTime get_date()
{
return nw.get_date();
}
}
它就是一个时间工厂类。我不关心是使用C#还是C++或是java,其重要的是思想,我也是一个学习者,在这方面的经验还是很弱,自己也是学习,学习使自己快乐。