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();
    
    
            }
        }
    }
  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/mc67/p/4826166.html
Copyright © 2011-2022 走看看