设计模式----Factory Method --创建型
2007-08-08 00:43
337 查看
从耦合关系谈起
– 模块与模块之间的紧耦合使
得软件面对变化时,相关的
模块都要随之更改
– 模块与模块之间的松耦合使
得软件面对变化时,一些模
块更容易被替换或者更改,
但其他模块保持不变
耦合关系直接决定着软件面对变化时的行为
动机(Motivation)
在软件系统中,经常面临着“某个对象”的创建工
作;由于需求的变化,这个对象经常面临着剧烈的
变化,但是它却拥有比较稳定的接口。
如何应对这种变化?如何提供一种“封装机制”来隔
离出“这个易变对象”的变化,从而保持系统中“其他
依赖该对象的对象”不随着需求改变而改变?
意图(Intent)
定义一个用于创建对象的接口,让子类决定实例化
哪一个类。Factory Method使得一个类的实例化延迟
到子类。
——《设计模式》GoF
结构(Structure)
写一个测试汽车系统
class Car
...{
public void Startup()
...{}
public void Run()
...{}
public void Turn(Direction direction)
...{}
public void stop()
...{
}
}
class CarTestFramework
...{
public void BuildTestContext()
...{ Car car=new Car();
//....
}
public void DoTest()
...{
Car car=new Car();
}
public TestData GetTestData()
...{ }
}
/**///////////////////这样的写的问题 car是变化的//////////
//////////下面就是可以
abstract class AbstractCar
...{
public abstract void Startup();
public abstract void Run();
public abstract void Turn(Direction direction);
public abstract void stop();
}
class HongqiCar :AbstractCar
...{
Enginee enginee1;
Enginee enginee2;
Enginee enginee3;
Enginee enginee4;
public void Startup()
...{
//.......
}
public void Run()
...{}
public void Turn(Direction direction)...{}
public void stop()
...{}
}
class CarTestFramework
...{
public void BuildTestContext(AbstractCar car)//
...{ car.run();
//....
}
public void DoTest(AbstractCar car)
...{
car.run();
}
public TestData GetTestData()
...{ }
}
Abstract class AbstractCarFactory...{
public void AbstractCar Create()
}
class HongqiCarFactory:AbstractCartFactory...{
public static override AbstractCar Create()
...{
new HongqiCar();
}
}
class App
...{
public static void Main()
...{
TestCarFramework tf=new TestCarFramework();
tf.BuildTestContext(HongqiCarFactory.Create());//这个也可以不要改 这个在程序上用配置文件
}
}
主逻辑不要更改--接口 ,更改就是实现;
Factory Method模式的几个要点
– 模块与模块之间的紧耦合使
得软件面对变化时,相关的
模块都要随之更改
– 模块与模块之间的松耦合使
得软件面对变化时,一些模
块更容易被替换或者更改,
但其他模块保持不变
耦合关系直接决定着软件面对变化时的行为
动机(Motivation)
在软件系统中,经常面临着“某个对象”的创建工
作;由于需求的变化,这个对象经常面临着剧烈的
变化,但是它却拥有比较稳定的接口。
如何应对这种变化?如何提供一种“封装机制”来隔
离出“这个易变对象”的变化,从而保持系统中“其他
依赖该对象的对象”不随着需求改变而改变?
意图(Intent)
定义一个用于创建对象的接口,让子类决定实例化
哪一个类。Factory Method使得一个类的实例化延迟
到子类。
——《设计模式》GoF
结构(Structure)
写一个测试汽车系统
class Car
...{
public void Startup()
...{}
public void Run()
...{}
public void Turn(Direction direction)
...{}
public void stop()
...{
}
}
class CarTestFramework
...{
public void BuildTestContext()
...{ Car car=new Car();
//....
}
public void DoTest()
...{
Car car=new Car();
}
public TestData GetTestData()
...{ }
}
/**///////////////////这样的写的问题 car是变化的//////////
//////////下面就是可以
abstract class AbstractCar
...{
public abstract void Startup();
public abstract void Run();
public abstract void Turn(Direction direction);
public abstract void stop();
}
class HongqiCar :AbstractCar
...{
Enginee enginee1;
Enginee enginee2;
Enginee enginee3;
Enginee enginee4;
public void Startup()
...{
//.......
}
public void Run()
...{}
public void Turn(Direction direction)...{}
public void stop()
...{}
}
class CarTestFramework
...{
public void BuildTestContext(AbstractCar car)//
...{ car.run();
//....
}
public void DoTest(AbstractCar car)
...{
car.run();
}
public TestData GetTestData()
...{ }
}
Abstract class AbstractCarFactory...{
public void AbstractCar Create()
}
class HongqiCarFactory:AbstractCartFactory...{
public static override AbstractCar Create()
...{
new HongqiCar();
}
}
class App
...{
public static void Main()
...{
TestCarFramework tf=new TestCarFramework();
tf.BuildTestContext(HongqiCarFactory.Create());//这个也可以不要改 这个在程序上用配置文件
}
}
主逻辑不要更改--接口 ,更改就是实现;
Factory Method模式的几个要点
相关文章推荐
- 设计模式四:Factory method工厂方法——对象创建型模式
- [设计模式-创建型]工厂方法(Factory Method)
- 设计模式--创建型-FactoryMethod(工厂方法)
- 设计模式(2)-对象创建型模式-Factory Method模式
- 设计模式(一):工厂模式FactoryMethod(创建型模式)
- JAVA设计模式(24):创建型-工厂模式【工厂方法模式】(Factory Method)
- 【设计模式基础】创建型模式 - 4 - 工厂方法(Factory Method)
- [导入]C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式).zip(10.09 MB)
- C++设计模式 -> 创建型 -> 工厂方式(FactoryMethod)
- [设计模式-创建型]工厂方法(Factory Method)
- [设计模式学习笔记二][创建型模式][工厂方法(Factory Method)]
- C#面向对象设计模式纵横谈(四) --- Factory Method 工厂方法(创建型模式)
- PHP设计模式:创建型之工厂模式(Factory Method)
- 四.创建型设计模式——Factory Method Pattern(工厂方法模式)
- 设计模式-创建型-Factory Method(工厂方法)
- 设计模型之创建型模式之工厂方法模式(Factory Method)
- JAVA设计模式(01):创建型-工厂模式【工厂方法模式】(Factory Method)
- 设计模式(2)-对象创建型模式-Factory Method模式
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
- [设计模式笔记]一. 创建型模式--2.Factory Method模式(一)