zoukankan      html  css  js  c++  java
  • 工厂设计模式

    工厂设计模式

    工厂模式:对象的生成不再直接依赖我们的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();
    
    
            }
        }
    }
  • 相关阅读:
    How to Get Started With AIOps
    第六部分 实现细节
    第一部分 概览
    第五部分 软件架构
    vs2010 sqlite guid 问题
    cordova(phonegap)+qjm 一统天下
    jQuery调用WebServices总是出错问题解决
    phonegap中http链接自动调用本地浏览器解决办法
    MSSQL省市数据库
    博客的第一篇
  • 原文地址:https://www.cnblogs.com/mc67/p/4826166.html
Copyright © 2011-2022 走看看