23种设计模式-FactoryMethod(工厂方法)设计模式
2017-03-25 23:10
811 查看
解决"单个对象"的需求变化,
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FactoryMethod工厂方法模式_创建型模式_ { //一个设计成功的工程,当需求改变时,主逻辑和接口都不需要改 //只需要扩展你的具体实现. /* *1.Factory Method模式主要用于隔离类对象使用者和具体类型之间的耦合关系.面对一个经常变换的具体类型,紧耦合关系会导致软件的脆弱. *2.Factory Method模式通过面向对象手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好的解决了这种紧耦合关系. *3.Factory Method模式解决"单个对象"的需求变化,Abstract Factory模式解决"系列对象"的需求变化,Builder模式解决"对象部分"的希求变化. */ //====================AbstractCar抽象文件=============== public abstract class AbstractCar { public abstract void SatrtUp() { } public abstract void Run() { } public abstract void Turn() { } public abstract void Stop() { } } //====================================================== //=====================HongQiCar实例文件================ public class HongQiCar:AbstractCar{ public override void SatrtUp() { Console.WriteLine("红旗UP"); } public override void Run() { Console.WriteLine("红旗Run"); } public override void Turn() { Console.WriteLine("红旗Turn"); } public override void Stop() { Console.WriteLine("红旗Stop"); } } //====================================================== //添加CarFactory抽象类这样就实现了对扩展开放对,修改关闭的原则 //===============CarFactory(汽车工厂抽象方法)抽象文件=== public abstract class CarFactory { public abstract AbstractCar CreateCar(); } //======================================================== //=======HongQiCarFactory(红旗汽车工厂实例方法)文件======= public class HongQiCarFactory:CarFactory{ public override AbstractCar CreateCar(){ return new HongQiCar(); } } //======================================================== //=============CarTestFramework文件======================= //汽车测试框架 class CarTestFramework { //构建测试环境 假设测试环境不确定要几个car对象 //有了工厂方法就可以解决这个问题., public void BuildTestContext(CarFactory _carfactory) { AbstractCar c1 = _carfactory.CreateCar(); AbstractCar c2 = _carfactory.CreateCar(); AbstractCar c3 = _carfactory.CreateCar(); } } //======================================================== class Program { static void Main(string[] args) { CarTestFramework testFramework = new CarTestFramework(); //这个地方想要测试别的汽车的时候就不需要修改框架了, //直接添加几个类,继承抽象类就可以了. testFramework.BuildTestContext(new HongQiCarFactory()); } } }
相关文章推荐
- 23种设计模式-FactoryMethod工厂方法
- Java设计模式圣经连载(02)-工厂方法(Factory Method)模式
- 设计模式(八)[工厂方法(Factory Method)模式]
- 设计模式--工厂方法(FactoryMethod)
- 设计模式之FactoryMethod(工厂方法)
- 【初学设计模式】Factory Method (工厂方法)
- 设计模式之工厂方法(Factory Method)模式
- 设计模式-3.3 Factory Method(工厂方法) 对象创建型模式
- 设计模式笔记-创建型模式之三--工厂方法:Factory Method
- 学习笔记系列之NET设计模式(3):工厂方法(Factory Method)
- 设计模式--工厂方法(FactoryMethod)
- C#面向对象设计模式纵横谈(四) --- Factory Method 工厂方法(创建型模式)
- 3.23种设计模式的Java版--Factory Method(工厂方法)
- 设计模式之Factory Method(工厂方法)
- 设计模式示例一 Factory Method(工厂方法)
- 设计模式-工厂方法(Factory Method)
- 设计模式-创建型模式之 Factory Method(工厂方法)
- JAVA设计模式——工厂方法(Factory Method)模式
- 设计模式(1)-工厂方法(Factory Method)
- 设计模式 工厂方法(Factory Method Pattern)