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 }
时间: 2024-10-21 09:38:59

Asp.Net 设计模式 之 “简单工厂”模式的相关文章

【设计模式】简单工厂模式

以面向对象的思想和简单工厂模式,写一个C++计算器程序,代码如下: #include <iostream> using namespace std; class Operation { public: Operation(double left, double right) { lhs = left; rhs = right; } const double GetLeft() const { return lhs; } const double GetRight() const { retur

设计模式之简单工厂模式

设计模式之简单工厂模式 动机:         不暴露实例化逻辑来创建对象.通过公共的接口创建新的对象.         这是一个简单的实现,客户端需要一个product,但是client不直接使用new对象,而是通过提供需要的对象信息来找factory得到新的product.         这个factory实例化一个具体的product并返回(转化成抽象的类),client段使用这个抽象的类而不用考虑它具体的实现. 应用举例:        也许工厂模式是使用最多的模式之一.举个例子,一个

设计模式初探—简单工厂模式

为什么要学习设计模式? 可重用.可维护.可扩展.灵活性好 什么是简单工厂模式? 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 简单工厂模式的好处? (1)将具体业务和实现进行分离 (2)将多个具体业务之间进行解耦 解决的问题? 单独的类来创造

【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式

课程回顾: 接口:1.属性:public\static\final2.方法:public\abstract 多态:1.静态化(编译时)多态重载2.动态化(运行时)多态重写对象转型 1.向上转型 2.向下转型 今日内容:内部类:定义在类的内部的类1.成员内部类格式:[修饰符] class 类名 { }内部不能有静态的属性和方法,可以访问外部类的属性,也可以调用外部类的方法 在静态方法中的使用格式:外部类 外对象=new 外部类();成员内部类 对象名=外对象.new 成员内部类(); 2.静态内部

iOS设计模式 - (3)简单工厂模式

iOS设计模式 - (3)简单工厂模式           by Colin丶 转载请注明出处:              http://blog.csdn.net/hitwhylz/article/details/40381721 一.简述 简单工厂模式(FACTORY),通过面向对象的封装,继承和多态来降低程序的耦合度.将一个具体类的实例化交给一个静态工厂方法来执行. 该模式中的角色包括: 工厂类(Simple Factory): 只包含了创建具体类的静态方法. 抽象产品(Product):

大话设计模式_简单工厂模式(Java代码)

简单的描述:一个父类.多个子类,实例化那个子类由一个单独的工厂类来进行 图片摘自大话设计模式: 运算类: 1 package com.longsheng.simpleFactory; 2 3 public class Calculate { 4 5 private double firstNum; 6 private double secondNum; 7 8 public double getFirstNum() { 9 return firstNum; 10 } 11 12 public v

设计模式初探——简单工厂模式

学习设计模式已经有一段时间了,<大话>也正看第二遍,可是却迟迟不敢下笔.算了,先拿简单的开刀吧. 简单工厂模式是设计模式中一种比较简单.基础的设计模式. 定义: 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 包含元素: 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象. 抽象产品(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的

01.设计模式_简单工厂模式

转载自  http://www.cnblogs.com/zhili/p/SimpleFactory.html 一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂模式的介绍 说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类, 我们平常编程

设计模式之简单工厂模式(Simply Factory)摘录

从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 该模式中包含的角色及其职责:(1).工厂(Creator)角色:简单工厂模式的