设计模式:
解决需求变动问题(在对软件或模块关系认识更深刻时使用)。
模块间耦合关系:
(耦合关系直接决定软件面对变化时的行为)
【模块划分,将变和不变的东西找到】
模块与模块之间关系
(1)紧耦合:一个模块变化,相关模块都改变
(2)松耦合:一些模块更容易被替换或更改,但其他模块保持不变
松耦合:
在对软件或模块深入了解后,梳理出如上的图,这样可以很明显分出软件或模块的主次关系和抽象细节关系。
主模块(主逻辑):变化慢或不变【高层抽象】
次模块(接口+实现):变化快【底层细节】
工厂模式:
某个对象创建工作中:由于需求变化,该对象的具体实现经常面临剧烈变化,但是接口稳定。
结构(结合代码更易理解):
代码实现举例:
场景,车和测试车的框架
1、车抽象类:
public abstract class AbstractCar
{
public abstract void Startup();
public abstract void Run();
public abstract void Turn();
public abstract void Stop();
}
2、车抽象工厂
public abstract class CarFactory
{
public abstract AbstractCar CreateCar();
}
3、具体红旗牌车,以及具体红旗车的工厂
public class HongQiCar:AbstractCar//具体实现车
{
private int Speed;
public override void Startup()
{
}
public override void Run()
{
}
public override void Turn()
{
}
public override void Stop()
{
}
}
public class HongQICarFactory:CarFactory//具体工厂
{
public override AbstractCar CreateCar()
{
return new HongQiCar();
}
}
3、车测试框架
public class CarTestFramework
{
public void BuildContext(CarFactory carFactory)//依赖接口
{
//需要多个实例
AbstractCar c1 = carFactory.CreateCar();
AbstractCar c2 = carFactory.CreateCar();
AbstractCar c3 = carFactory.CreateCar();
}
public void DoTest()
{
}
public void GetTestData()
{
}
}
4、主函数调用
public static void Main(string[] args)
{
CarTestFramework carTestFramework = new CarTestFramework();
carTestFramework.BuildContext(new HongQICarFactory());
}
要点: