Article Directory
Tip: The following is the content of this article, the following cases are for reference
1. The abstract method of the operator (Operation)
Define an abstract class Operation as the parent class of all operators (+, -, *, /)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public abstract class Operation
{
private double num1;
private double num2;
public double Num1
{
get {
return num1; }
set {
num1 = value; }
}
public double Num2
{
get {
return num2; }
set {
num2 = value; }
}
public abstract double getResult(); // 需要重写的方法
}
}
2. Create all operator subclasses
1. Addition
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Add:Operation
{
override
public double getResult()
{
double result = Num1+ Num2;
return result;
}
}
}
2. Subtraction
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Sub: Operation
{
override
public double getResult()
{
double result = Num1 - Num2;
return result;
}
}
}
3. Multiplication
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Mul: Operation
{
override
public double getResult()
{
double result = Num1 * Num2;
return result;
}
}
}
4. Division class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class Div:Operation
{
override
public double getResult()
{
if (Num2 != 0)
{
double result = Num1 / Num2;
return result;
}
else
{
return 0;
}
}
}
}
Three, create a factory function
Through the factory function new an operator object, get the result number
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace demo02
{
public class OperationFactory
{
public static Operation getOperation(String oper) //接收传入的操作符
{
switch (oper)
{
case "+": return new Add();
case "-": return new Sub();
case "*": return new Mul();
case "/": return new Div();
default:return null;
}
}
}
}
Fourth, the page effect
Here I use the web page for display output
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="demo02.index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.auto-style1 {
height: 24px;
width: 932px;
}
.auto-style2 {
height: 24px;
width: 191px;
}
.auto-style3 {
width: 191px;
}
.auto-style4 {
height: 24px;
width: 70px;
}
.auto-style5 {
width: 70px;
}
.auto-style6 {
width: 932px;
}
.auto-style7 {
width: 100%;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="auto-style7">
<tr>
<td class="auto-style2">
<asp:TextBox ID="num1" runat="server" type="number" ></asp:TextBox>
</td>
<td class="auto-style4">
<asp:DropDownList ID="opers" runat="server">
<asp:ListItem>+</asp:ListItem>
<asp:ListItem>-</asp:ListItem>
<asp:ListItem>*</asp:ListItem>
<asp:ListItem>/</asp:ListItem>
</asp:DropDownList>
</td>
<td class="auto-style1">
<asp:TextBox ID="num2" type="number" runat="server"></asp:TextBox>
=
<asp:Label ID="result" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td class="auto-style3"> </td>
<td class="auto-style5"> </td>
<td class="auto-style6"> </td>
</tr>
<tr>
<td class="auto-style3"> </td>
<td class="auto-style5"> </td>
<td class="auto-style6">
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="计算" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>