面向对象语言通过封装、继承、多态把程序的耦合度降低,而设计模式就是使得程序更加的灵活,容易修改,并且易于复用。
所以设计模式是程序编程的重要内容。
简单工厂模式,根据参数的不同返回不同类的实例,并且专门定义一个类来创建其他类的实例(也就是工厂类Factory),而被创建的实例通常是同一个类的父类。
结构t图
工厂类(Factory):工厂类生产实例
抽象产品(AbstractProduct):抽象类或接口,用于规定其派生类的具体要求
具体产品(Product):抽象类的派生方法,用于满足抽象类的方法
class Program
{
static void Main(string[] args)
{
Vehicle v;
v = VehicleFactory.CreateVehicle("汽车");
v.GetOff();
Console.ReadLine();
}
}
class VehicleFactory
{
public static Vehicle CreateVehicle(string name)
{
Vehicle veh;
if (name == "摩托车")
{
veh = new Motorbike();
return veh;
}
if (name == "汽车")
{
veh = new Car();
return veh;
}
return null;
//Vehicle veh = null;
//switch (name)
//{
// case "摩托车":
// veh = new Motorbike();
// break;
// case "汽车":
// veh = new Car();
// break;
//}
//return veh;
}
}
abstract class Vehicle//交通工具
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public abstract void GetOn();//上车
public abstract void GetOff();//下车
public abstract void Accelerate();//加速
public abstract void Brake();//刹车
public abstract void Turn();//转向
}
class Motorbike : Vehicle//摩托车
{
public override void GetOn()
{
Console.WriteLine("上摩托车");
}//上车
override public void GetOff()
{
Console.WriteLine("下摩托车");
}//下车
override public void Accelerate()
{
Console.WriteLine("摩托车加速");
}//加速
override public void Brake()//刹车
{
Console.WriteLine("摩托车刹车");
}
override public void Turn()//转向
{
Console.WriteLine("摩托车转向");
}
}
class Car:Vehicle//汽车
{
override public void GetOn()
{
Console.WriteLine("上汽车");
}//上车
override public void GetOff()
{
Console.WriteLine("下汽车");
}//下车
override public void Accelerate()
{
Console.WriteLine("汽车加速");
}//加速
override public void Brake()//刹车
{
Console.WriteLine("汽车刹车");
}
override public void Turn()//转向
{
Console.WriteLine("汽车转向");
}
}