工厂设计模式
工厂设计模式
工厂模式:对象的生成不再直接依赖我们的new关键字,而是交给我们的“工厂”(当然,需要传递参数),是一种解耦的办法,但是也没有做到真正的解耦,如果要做到真正的解耦,就不应该依赖我们的new关键字,这个才是重点,实现的方法
1.将要生成的对象写在配置文件中,通过获取配置文件中的信息,来动态的生成对象。
2.可以考虑使用三方框架,如:spring.net
这里我只做工厂模式的代码演示,让你对工厂模式有一个整理的了解,空了,我会将真正的解耦方式上传
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Factory001 { public abstract class Light { public abstract void TurnOn(); public abstract void TurnOff(); } public class BulbLight : Light { public override void TurnOn() { Console.WriteLine("bulb light is turned on"); } public override void TurnOff() { Console.WriteLine("bulb light is turned off"); } } public class TubeLight : Light { public override void TurnOn() { Console.WriteLine("Tube Light is Trued on.."); } public override void TurnOff() { Console.WriteLine("Tube Light is Turned off.."); } } public class LightSimpleFactory { public Light Create(string type) { if (type == "Bulb") { return new BulbLight(); } else if (type == "Tube") { return new TubeLight(); } else { return null; } } } class Program { static void Main(string[] args) { //工厂模式:负责将大量有共同接口类的实例化; //一个接口 不同实现类; //工厂模式可以动态的决定将哪一个类实例化; //简单工厂 //工厂方法 //抽象工厂; //从 net 后台的架构搭建 //前台 的选择的权衡;使用框架? 自己开发? 插件? 等等的 选择的呀; //也就是说 一个接口 有多个实现类; //而具体的选择哪个实现 类 交给我们的工厂去决定; LightSimpleFactory isf = new LightSimpleFactory(); Light l = isf.Create("Bulb"); l.TurnOn(); l.TurnOff(); Console.WriteLine("--------------------------"); l = isf.Create("Tube"); l.TurnOn(); l.TurnOff(); Console.ReadLine(); } } }