工厂方法模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂方法模式相关的知识,希望对你有一定的参考价值。
工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪个类型的对象,目的是将对象的创建推迟到子类中完成,并想对象的使用者隐藏对象的创建过程与具体类型
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
实例:一个工厂不能创建所有品牌的车辆,于是单独分出来具体的工厂,每个具体的工厂创建一个品牌的车辆。
步骤1
创建一个接口
1 public interface ICar 2 { 3 void CreateCar(); 4 }
步骤2
创建实现接口的基类
1 public abstract class CCar : ICar 2 { 3 public abstract void CreateCar(); 4 }
步骤3
创建实现接口的实体类
1 public class BMW : CCar 2 { 3 public override void CreateCar() 4 { 5 Console.WriteLine("BWM!"); 6 } 7 } 8 9 public class Benz : CCar 10 { 11 public override void CreateCar() 12 { 13 Console.WriteLine("Benz!"); 14 } 15 } 16 17 public class Rolls : CCar 18 { 19 public override void CreateCar() 20 { 21 Console.WriteLine("Rolls!"); 22 } 23 }
步骤4
创建一个工厂,生成基于给定信息的实体类的对象
1 class CarFactory 2 { 3 public ICar CreateCar(string type) 4 { 5 if (type == "BWM") 6 { 7 return new BMW(); 8 } 9 else if (type == "Benz") 10 { 11 return new Benz(); 12 } 13 else if (type == "Rolls") 14 { 15 return new Rolls(); 16 } 17 return null; 18 } 19 }
步骤5
使用该工厂,通过传递类型信息来获取实体类的对象
1 class CarFactory 2 { 3 public ICar CreateCar(string type) 4 { 5 if (type == "BWM") 6 { 7 return new BMW(); 8 } 9 else if (type == "Benz") 10 { 11 return new Benz(); 12 } 13 else if (type == "Rolls") 14 { 15 return new Rolls(); 16 } 17 return null; 18 } 19 }
最后
如有不正确的地方,请各位斧正!
以上是关于工厂方法模式的主要内容,如果未能解决你的问题,请参考以下文章