Asp.Net 设计模式 之 “简单工厂”模式

  • 主要思想:
     public static Operation CreateFactory(string ope)
        {
            //实例化空父类,让父类指向子类
            Operation op = null;
            switch (ope)
            {
                case "+":
                    op = new OperationAdd();//父类指向OperationAdd这个子类,并调用子类中的加法
                    break;
                case "-":
                    op = new OperationSub();//父类指向OperationSub这个子类,并调用子类中的减法
                    break;
            }
            return op;
        }

 

  • 相关源码:
 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     //5.定义子类,继承父类,并对父类进行重写(减法)
48     class OperationSub : Operation
49     {
50         public override int getResule()
51         {
52             return numberA - numberB;
53         }
54     }
55     //6.创建简单工厂模式
56     class Factory
57     {
58         /// <summary>
59         /// 封装返回值类型为上面“父类型”——Operation类型的方法
60         /// </summary>
61         /// <param name="ope">ope是指运算的类型,如+、-、*、/</param>
62         /// <returns></returns>
63         public static Operation CreateFactory(string ope)
64         {
65             //实例化空父类,让父类指向子类
66             Operation op = null;
67             switch (ope)
68             {
69                 case "+":
70                     op = new OperationAdd();//父类指向OperationAdd这个子类,并调用子类中的加法
71                     break;
72                 case "-":
73                     op = new OperationSub();//父类指向OperationSub这个子类,并调用子类中的减法
74                     break;
75             }
76             return op;
77         }
78     }
79     //7.主函数中进行调用
80     class Program
81     {
82         static void Main(string[] args)
83         {
84             //要用哪种运算,只需将参数传入工厂中的方法中,工厂将会自动调用相关的方法,
85             //即(父类指向相应的子类,从而调用相应的方法),进行相应的运算
86             Operation op = Factory.CreateFactory("+");
87             op.NumberA = 10;
88             op.NumberB = 30;
89             //调用父类中的方法来获取结果
90             int result = op.getResule();
91             Console.WriteLine(result);
92             Console.ReadKey();
93         }
94         //如果在后续的编程中仍需要有其他的运算,则只需要在子类中加上相应的子类,
95         //并在工厂中加上相应的case情况即可,这也就是简单工厂的“利”所在
96     }
97 }

 

转载于:https://www.cnblogs.com/pang951189/p/7805073.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UBuntu国内镜像地址下载

http://www.oschina.net/p/ubuntu http://releases.ubuntu.com/ http://mirrors.163.com/ubuntu-releases/14.04/

Effective_STL 学习笔记(十九) 了解相等和等价的区别

find 算法和 set 的 insert 成员函数是很多必须判断两个值是否相同的函数代表&#xff0c; find 对 “相同” 的定义是相等&#xff0c;基于 operator &#xff0c; set::insert 对 “相同” 的定义是等价&#xff0c;通常基于 operator< 。 操作上来说&#xff0c;相等的概…

判断是否获取到手机相机权限

实际运用场景&#xff1a; 上传图片&#xff0c;查看相机设备&#xff0c;使用相机 在做这些操作的时候先调用这段话 AVAuthorizationStatus authStatus [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if (authStatus AVAuthorizationStatusRestric…

事物笔记

什么是事务&#xff1a; 一件事情有N个组成单元&#xff0c;执行之后要么同时成功&#xff0c;要么同时失败。 MySQL是一条默认的事务&#xff0c;一条sql语句就是一条事务。------------------------------------------------------------MySQL事务&#xff1a; 1、开启一个事…

Python Socket通信黏包问题分析及解决方法

参考&#xff1a;http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5 1.黏包的表现(以客户端远程操作服务端命令为例) 注&#xff1a;只有在TCP协议通信的情况下&#xff0c;才会产生黏包问题 基于TCP协议实现的黏包 #!/usr/bin/env python # -*- coding: utf-8 -*- …

Django 路由

定义&#xff1a; URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表&#xff1b;你就是以这种方式告诉Django&#xff0c;对于这个URL调用这段代码&#xff0c;对于那个URL调用那段代码。 URL配置格式&#xff1a; urlpatter…

Ubuntu默认不进入图形界面

修改 /etc/X11/default-display-manager如果值为/usr/sbin/gdm&#xff0c;(ubuntu12.04 为/usr/sbin/lightdm)则进入图形界面 如果值为false&#xff0c;则进入控制台&#xff08;命令行方式&#xff09;。如果想从控制台进入图形界面&#xff0c;可以在控制台上输入命令 sudo…

读《构建之法》的心得体会

前段时间&#xff0c;我看了《构建之法》的一些内容&#xff0c;有了一些心得体会。 软件工程所讨论的是代码量巨大、涉及人数众多、项目需求多变时所要解决的问题。而在校学生根本就没有这样的环境。而邹欣老师的《构建之法》是我读过的书中最浅显易懂的软件工程书。 在绪论中…

2440内存管理

title: 2440内存管理 tags: ARM date: 2018-10-17 19:08:49 --- 2440内存管理 特性 大/小端&#xff08;通过软件选择&#xff09;地址空间&#xff1a;每个 Bank 有 128M 字节(总共 1G/8 个 Bank)除了 BANK0&#xff08;16/32 位&#xff09;之外【引导ROM&#xff0c;其总线宽…

C#设计模式之十二代理模式(Proxy Pattern)【结构型】

一、引言 今天我们要讲【结构型】设计模式的第七个模式&#xff0c;也是“结构型”设计模式中的最后一个模式&#xff0c;该模式是【代理模式】&#xff0c;英文名称是&#xff1a;Proxy Pattern。还是老套路&#xff0c;先从名字上来看看。“代理”可以理解为“代替”&#…

IPv6检测

1&#xff09;判断服务器是否支持IPv6 &#xff1a; http://ipv6-test.com/validate.php 2&#xff09;检测当前设备打开网站的连接方式是IPv4还是IPv6&#xff1a; http://ipv6.sjtu.edu.cn/ 转载于:https://www.cnblogs.com/superbobo/p/6687605.html

百度首席科学家吴恩达宣布将从百度离职

海外网3月22日电 据媒体消息&#xff0c;百度首席科学家吴恩达&#xff08;Andrew Ng&#xff09;在英文自媒体平台Medium及微博、Twitter等个人社交平台发布公开信&#xff0c;宣布自己将从百度离职&#xff0c;开启自己在人工智能领域的新篇章。 吴恩达是人工智能和机器学习…

CentOS7.5 使用二进制程序部署Kubernetes1.12.2(三)

一、安装方式介绍 1、yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面&#xff0c;使用 yum 安装&#xff0c;好处是简单&#xff0c;坏处也很明显&#xff0c;需要官方更新 yum 源才能获得最新版本的软件&#xff0c;而所有软件的依赖又不能自己指…

Oracle存储过程--案例

限额控制 CREATE OR REPLACE PACKAGE BODY NP_PCKG_MERCHANT_LIMIT ASPROCEDURE CHECK_LIMIT (in_iplCode IN VARCHAR2, --行业编号in_iplState IN VARCHAR2, --卡类型in_posNo IN VARCHAR2, --商户号in_tranAmt IN …

SpringMVC—对Ajax的处理(含 JSON 类型)(2)

这里编写了一个通用的类型转换器&#xff1a;用来转换形如&#xff1a; firstNamejack&lastNamelily&gender1&foodsSteak&foodsPizza&quoteEnteryourfavoritequote!&educationJr.High&tOfDDay 到 Student 对象。/*** author solverpeng* create 20…

马来西亚热情拥抱阿里巴巴 马云倡议的eWTP首次落地海外

摘要&#xff1a;3月22日&#xff0c;马来西亚总理纳吉布与阿里巴巴集团董事局主席马云一同出现在吉隆坡一场盛大启动仪式上&#xff0c;他们将共同见证马云的eWTP理念落地马来西亚。 3月22日&#xff0c;在邀请阿里巴巴集团董事局主席马云、阿里巴巴集团CEO张勇、蚂蚁金服集团…

征名公布|Qtum量子链企业版—Unita 中文名征集圆满落幕

Qtum量子链基金会为感谢社区与为了充分调动社区积极性&#xff0c;调动社区力量&#xff0c;在Qtum企业版完整公布之前将中文名留给社区成员们集思广益&#xff0c;其中截止2018年11月26日&#xff0c;我们征集到数百份来自社区的优秀名称&#xff0c;在经过基金会层层严肃认真…

随便玩玩之PostgreSQL(第一章)PostgreSQL简介

随便玩玩之PostgreSQL 未经授权不得转载 第1章PostgreSQL简介 1.1什么是PostgreSQLPostgresql是数据库&#xff08;软件&#xff09;。The worlds most advanced open source database.世界上最先进的开源数据库。 1.2PostgreSQL的优势随便用、不要钱 比MySQL好&#xff0c;媲美…

bootstrap 利用jquery 添加disabled属性

添加&#xff1a; $("#id").attr("disabled","disabled"); 去除&#xff1a; $("#id").removeattr("disabled");转载于:https://www.cnblogs.com/duyunchao-2261/p/6692141.html

生产环境中Oracle常用函数总结

1>to_char,将日期转换为字符&#xff1b;add_months,在第一个参数的日期上加或者减第二个参数的值&#xff1b;select dkzh,jkhtbh,yhkrq,dkffrq,shqs,dqyqcs,to_char(add_months(dkffrq,shqsdqyqcs1),yyyymm) from grdk_dk_zz a where a.dkzt in(02,03) and jgbm like 01||…