using System;
using System.IO;
public class Road //路的概念
{
}
public class WaterRoad:Road //水路
{
}
public class StoneRoad : Road //石头路
{
}
//类库
public class RoadFactory
{
public static Road CrateRoad()
{
return new WaterRoad();
// return new StoneRoad(); 修改
//
}
}
//以下客户程序
public class user
{
public void Main(sting[] args)
{
Road r1 = new WaterRoad();
Road r2 = RoadFactory.CrateRoad();
/*
* 假定如果我们开始定义了水路,我们r1的定义方式只用一个new,
* 但是某天我们的路变成石头路了,我们则需要修改:
* 1.类库要增加一个路,石头路。
* 2.客户程序还得修改r1的实力化代码。
* 这样做是不太好的。
* r2的方法则比较灵活,客户程序是不需要修改的。
* 只需要修改类库里的RoadFactory.CratrRoad()方法就可以让所有使用水路的客户程序都变成石头路。
*/
}
}
using System.IO;
public class Road //路的概念
{
}
public class WaterRoad:Road //水路
{
}
public class StoneRoad : Road //石头路
{
}
//类库
public class RoadFactory
{
public static Road CrateRoad()
{
return new WaterRoad();
// return new StoneRoad(); 修改
//
}
}
//以下客户程序
public class user
{
public void Main(sting[] args)
{
Road r1 = new WaterRoad();
Road r2 = RoadFactory.CrateRoad();
/*
* 假定如果我们开始定义了水路,我们r1的定义方式只用一个new,
* 但是某天我们的路变成石头路了,我们则需要修改:
* 1.类库要增加一个路,石头路。
* 2.客户程序还得修改r1的实力化代码。
* 这样做是不太好的。
* r2的方法则比较灵活,客户程序是不需要修改的。
* 只需要修改类库里的RoadFactory.CratrRoad()方法就可以让所有使用水路的客户程序都变成石头路。
*/
}
}