三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> ASP.NET -> Asp.Net 设计模式 之 “工厂方法”即利用 接口 实现的抽象工厂 -> 正文阅读
 

[ASP.NET]Asp.Net 设计模式 之 “工厂方法”即利用 接口 实现的抽象工厂

Asp.Net 设计模式 之 “工厂方法”即利用 接口 实现的抽象工厂 主要改动部分:
/// <summary>
    /// 6.创建工厂方法模式(抽象工厂:接口)
    /// </summary>
    interface IFactory    //父接口(父类工厂)
    {
        /// <summary>
        /// 此父接口提供一个无参的函数方法
        /// </summary>
        /// <returns></returns>
        Operation CreateOperation();
    }
    /// <summary>
    /// 定义子类工厂,并继承父类工厂(父接口)
    /// </summary>
    class FactoryAdd : IFactory
    {
        /// <summary>
        /// 封装与父类工厂同名函数(返回值类型亦相同)
        /// </summary>
        /// <returns></returns>
        public Operation CreateOperation()
        {
            //返回上面OperationAdd子类
            return new OperationAdd();
        }
    }
源码:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 
  7 namespace FactoryModel
  8 {
  9     //====================使用C#,利用简单工厂模式,实现简单的计算器功能====================
 10     //考察时知识点:面向对象三大特性——继承、封装、多态
 11     /// <summary>
 12     /// 1.定义父类,同时也是一个封装
 13     /// </summary>
 14     class Operation
 15     {
 16         //2.因为要让子类能够对父类进行访问,故应要将参数定义为受保护的变量类型
 17         protected int numberA;
 18         protected int numberB;
 19         //定义属性(必写)
 20         public int NumberA
 21         {
 22             get { return numberA; }
 23             set { numberA = value; }
 24         }
 25         public int NumberB
 26         {
 27             get { return numberB; }
 28             set { numberB = value; }
 29         }
 30         //3.封装虚方法,以供子类进行重写
 31         public virtual int getResule()
 32         {
 33             int result = 0;
 34             return result;
 35         }
 36     }
 37     /// <summary>
 38     /// 4.定义子类,继承父类,并对父类进行重写(加法)
 39     /// </summary>
 40     class OperationAdd : Operation
 41     {
 42         public override int getResule()
 43         {
 44             return numberA + numberB;
 45         }
 46     }
 47     /// <summary>
 48     /// 5.定义子类,继承父类,并对父类进行重写(减法)
 49     /// </summary>
 50     class OperationSub : Operation
 51     {
 52         public override int getResule()
 53         {
 54             return numberA - numberB;
 55         }
 56     }
 57     /// <summary>
 58     /// 6.创建工厂方法模式(抽象工厂:接口)
 59     /// </summary>
 60     interface IFactory    //父接口(父类工厂)
 61     {
 62         /// <summary>
 63         /// 此父接口提供一个无参的函数方法
 64         /// </summary>
 65         /// <returns></returns>
 66         Operation CreateOperation();
 67     }
 68     /// <summary>
 69     /// 定义子类工厂,并继承父类工厂(父接口)
 70     /// </summary>
 71     class FactoryAdd : IFactory
 72     {
 73         /// <summary>
 74         /// 封装与父类工厂同名函数(返回值类型亦相同)
 75         /// </summary>
 76         /// <returns></returns>
 77         public Operation CreateOperation()
 78         {
 79             //返回上面OperationAdd子类
 80             return new OperationAdd();
 81         }
 82     }
 83     /// <summary>
 84     /// 定义子类工厂,并继承父类工厂(父接口)
 85     /// </summary>
 86     class FactorySub : IFactory
 87     {
 88         /// <summary>
 89         /// 封装与父类工厂同名函数(返回值类型亦相同)
 90         /// </summary>
 91         /// <returns></returns>
 92         public Operation CreateOperation()
 93         {
 94             ////返回上面OperationAdd子类
 95             return new OperationSub();
 96         }
 97     }
 98     //7.主函数中进行调用
 99     class Program
100     {
101         static void Main(string[] args)
102         {
103             //进行加法运算,指定相应的工厂类型即可,无须再次输入运算类型
104             IFactory i = new FactorySub();
105             //进行减法运算
106             //IFactory ii = new FactorySub();  
107             Operation op = i.CreateOperation();
108             op.NumberA = 10;
109             op.NumberB = 30;
110             //调用子类中的方法来获取结果
111             int result = op.getResule();
112             Console.WriteLine(result);                 
113             Console.ReadKey();
114         }
115         //如果在后续的编程中仍需要有其他的运算,则只需要在子类中加上相应的子类,
116         //并在工厂方法中中加上相应的工厂类即可即可,无须需改代码,这也就是工厂方法(抽象工厂)的“利”所在
117     }
118 }

  ASP.NET 最新文章
IIS服务器的请求流程
通过Web Service实现IP地址查询功能
VS 远程调试阿里云上的web站点,Remote Deb
sqlserver的四种分页方式
WebService服务(转)
C#去除字符串中的反斜杠
关于web变量配置问题
用RSA实现Web单点登录密码的加密传输
你所不知道的linq
ASP.NET 一句代码实现批量数据绑定
上一篇文章      下一篇文章      查看所有文章
加:2017-11-08 23:22:31  更:2017-11-08 23:22:33 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年12日历
2017-12-17 18:09:44
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库