zoukankan      html  css  js  c++  java
  • asp.net 工厂模式讲解

    工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。这也是对象与过程分离的技术提现了oo思想
     一般我们将工厂模式分为一下三种:
       1)简单工厂模式(Simple Factory)
       2)工厂方法模式(Factory Method)

       3)抽象工厂模式(Abstract Factory)
     
    简单工厂模式:简单工厂模式又称静态工厂方法模式。它存在的目的很简单:定义一个用于创建对象的接口。
    它的组成:
    工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。
    抽象产品角色:它一般是具体产品继承的父类或者实现的接口,要实现什么功能。
    具体产品角色:工厂类所创建的对象就是此角色的实例,具体类的实现,是提现产品的实际功能。
     
     下面讲一个实例,相信很多人已经看过:
    话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!
    而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这种有病的现象在OO(面向对象)语言中可以避免了。下面就以C#语言为基础来引入我们本文的主题:工厂模式的工厂方法。
    //抽象产品角色
    public interface Car
    {
    string drive();
    }
     
     
    //具体产品角色,具体类的实现
    public class BenzCar : Car
    {
        public string drive()
        {
            return "Driving Benz";
        }   
    }
     
    public class BmwCar : Car
    {
     
        public string drive()
        {
            return "Driving Bmw";
        }
    }
     
     
    //工厂类角色,本模式的核心 选择实体工厂
    public static Car DriverCar(string category)
        {
            switch(category)
            {
                case "Benz":
                    return new BenzCar();
                    break;
     
                case "BmwCar":
                    return new BmwCar();
                    break;
                default: return null;            
            }       
    }
     
    //这里用户只需选择要开什么车就ok啦
    protected void Page_Load(object sender, EventArgs e)
        {
            Car car = Driver.DriverCar("Benz");                       
            Response.Write(car.drive());
     
        }
     
    工厂部分好像不太理想,因为每增加一辆车,都要在工厂类中增加相应的业务逻辑或者判断逻辑。抽象工厂模式能改变这一点。也就可以用条件外置(在web.config里面配置)和反射(加载实体的产品)来实现

  • 相关阅读:
    Javascript online compressor
    Asp.net mvc 3 JSON post & AOP
    Javascript Clone
    LiveRTMP之对接海康、大华等IPCamera SDK进行RTMP直播推送
    H5实现视频监控网络直播时前端自动适配
    监控物联网直播时遇到iOS无法播放HLS流的问题解决
    LivePlayer RTSP/RTMP/HTTP/HLS全功能播放器
    [转载]LivePlayer实现直播抓拍
    LiveRTMP内置IPCamera实现RTMP直播摄像机功能
    使用LiveNVR实现RTSP视频监控、直播推送
  • 原文地址:https://www.cnblogs.com/ybb521/p/2640122.html
Copyright © 2011-2022 走看看