Asp.Net 设计模式 之 “工厂方法”即利用 接口 实现的抽象工厂
2024-09-05 15:23:00
- 主要改动部分:
/// <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();
}
}
- 源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace FactoryModel
{
//====================使用C#,利用简单工厂模式,实现简单的计算器功能====================
//考察时知识点:面向对象三大特性——继承、封装、多态
/// <summary>
/// 1.定义父类,同时也是一个封装
/// </summary>
class Operation
{
//2.因为要让子类能够对父类进行访问,故应要将参数定义为受保护的变量类型
protected int numberA;
protected int numberB;
//定义属性(必写)
public int NumberA
{
get { return numberA; }
set { numberA = value; }
}
public int NumberB
{
get { return numberB; }
set { numberB = value; }
}
//3.封装虚方法,以供子类进行重写
public virtual int getResule()
{
int result = ;
return result;
}
}
/// <summary>
/// 4.定义子类,继承父类,并对父类进行重写(加法)
/// </summary>
class OperationAdd : Operation
{
public override int getResule()
{
return numberA + numberB;
}
}
/// <summary>
/// 5.定义子类,继承父类,并对父类进行重写(减法)
/// </summary>
class OperationSub : Operation
{
public override int getResule()
{
return numberA - numberB;
}
}
/// <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();
}
}
/// <summary>
/// 定义子类工厂,并继承父类工厂(父接口)
/// </summary>
class FactorySub : IFactory
{
/// <summary>
/// 封装与父类工厂同名函数(返回值类型亦相同)
/// </summary>
/// <returns></returns>
public Operation CreateOperation()
{
////返回上面OperationAdd子类
return new OperationSub();
}
}
//7.主函数中进行调用
class Program
{
static void Main(string[] args)
{
//进行加法运算,指定相应的工厂类型即可,无须再次输入运算类型
IFactory i = new FactorySub();
//进行减法运算
//IFactory ii = new FactorySub();
Operation op = i.CreateOperation();
op.NumberA = ;
op.NumberB = ;
//调用子类中的方法来获取结果
int result = op.getResule();
Console.WriteLine(result);
Console.ReadKey();
}
//如果在后续的编程中仍需要有其他的运算,则只需要在子类中加上相应的子类,
//并在工厂方法中中加上相应的工厂类即可即可,无须需改代码,这也就是工厂方法(抽象工厂)的“利”所在
}
}
最新文章
- C语言状态机
- 平板上的js和电脑上js的不同之处
- 删除div
- 【python】类中__slots__使用
- SQLServer学习笔记<;>;相关子查询及复杂查询
- java获得项目绝对路径
- 转 jQuery(图片、相册)插件代码实例
- tk资料
- Sybase配置数据库参数
- AngularJS2环境配置
- Go笔记-垃圾回收集和SetFinalizer
- 全废话SQL Server统计信息(1)——统计信息简介
- [Python]Python中的包(Package)
- angular + socket.io+nodejs
- 修改HAL标准库用printf函数发送数据直接输出
- SpringBoot使用HttpClient远程调用
- ThinkPHP框架 AJAX方法返回 AJAX实现分页例子:
- 【Skynet】Traceback汇总
- ROWID面试题-删除表中重复数据(重复数据保留一个)
- Selenium之IE浏览器的启动