/// <summary>
/// 抽象类
/// </summary>
public abstract class AbstractClass
{
// 一些抽象行为,放到子类去实现
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
/// <summary>
/// 模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们推迟到子类去实现。
/// </summary>
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("Done the method.");
}
}
/// <summary>
/// 具体类,实现了抽象类中的特定步骤
/// </summary>
public class ConcreteClassA : AbstractClass
{
/// <summary>
/// 与ConcreteClassB中的实现逻辑不同
/// </summary>
public override void PrimitiveOperation1()
{
Console.WriteLine("Implement operation 1 in Concreate class A.");
}
/// <summary>
/// 与ConcreteClassB中的实现逻辑不同
/// </summary>
public override void PrimitiveOperation2()
{
Console.WriteLine("Implement operation 2 in Concreate class A.");
}
}
/// <summary>
/// 具体类,实现了抽象类中的特定步骤
/// </summary>
public class ConcreteClassB : AbstractClass
{
/// <summary>
/// 与ConcreteClassA中的实现逻辑不同
/// </summary>
public override void PrimitiveOperation1()
{
Console.WriteLine("Implement operation 1 in Concreate class B.");
}
/// <summary>
/// 与ConcreteClassA中的实现逻辑不同
/// </summary>
public override void PrimitiveOperation2()
{
Console.WriteLine("Implement operation 2 in Concreate class B.");
}
}
class Program
{
static void Main(string[] args)
{
// 声明抽象类
AbstractClass c;
// 用ConcreteClassA实例化c
c = new ConcreteClassA();
c.TemplateMethod();
// 用ConcreteClassB实例化c
c = new ConcreteClassB();
c.TemplateMethod();
Console.Read();
}
}
/// <summary>
/// 抽象类,定义冒泡排序的骨架
/// </summary>
public abstract class BubbleSorter
{
private int operations = 0;
protected int length = 0;
/// <summary>
/// 冒泡排序算法
/// </summary>
/// <returns></returns>
protected int DoSort()
{
operations = 0;
if (length <= 1)
{
return operations;
}
for (int nextToLast = length - 2; nextToLast >= 0; nextToLast--)
{
for (int index = 0; index <= nextToLast; index++)
{
if (OutOfOrder(index))
{
Swap(index);
}
operations++;
}
}
return operations;
}
/// <summary>
/// 留给子类实现的交换位置方法
/// </summary>
/// <param name="index"></param>
protected abstract void Swap(int index);
/// <summary>
/// 留给子类实现的比较方法
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
protected abstract bool OutOfOrder(int index);
}
/// <summary>
/// 整型类型的冒泡算法实现
/// </summary>
public class IntBubbleSorter:BubbleSorter
{
private int[] array = null;
/// <summary>
/// 用冒泡算法排序
/// </summary>
/// <param name="theArray"></param>
/// <returns></returns>
public int Sort(int[] theArray)
{
array = theArray;
length = array.Length;
// 调用冒泡算法
return DoSort();
}
/// <summary>
/// 实现冒泡算法中的交换操作
/// </summary>
/// <param name="index"></param>
protected override void Swap(int index)
{
int temp = array[index];
array[index] = array[index + 1];
array[index + 1] = temp;
}
/// <summary>
/// 实现冒泡算法中的比较操作
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
protected override bool OutOfOrder(int index)
{
return (array[index] > array[index + 1]);
}
}
/// <summary>
/// 浮点数类型的冒泡算法
/// </summary>
public class FloatBubbleSorter:BubbleSorter
{
private float[] array = null;
/// <summary>
/// 用冒泡算法排序
/// </summary>
/// <param name="theArray"></param>
/// <returns></returns>
public int Sort(float[] theArray)
{
array = theArray;
length = array.Length;
// 调用冒泡算法
return DoSort();
}
/// <summary>
/// 实现冒泡算法中的交换操作
/// </summary>
/// <param name="index"></param>
protected override void Swap(int index)
{
float temp = array[index];
array[index] = array[index + 1];
array[index + 1] = temp;
}
/// <summary>
/// 实现冒泡算法中的比较操作
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
protected override bool OutOfOrder(int index)
{
return (array[index] > array[index + 1]);
}
}
class Program
{
static void Main(string[] args)
{
// 对整型数组排序
int[] intArray = new int[]{5, 3, 12, 8, 10};
BubbleSorter.IntBubbleSorter sorter = new BubbleSorter.IntBubbleSorter();
sorter.Sort(intArray);
foreach (int item in intArray)
{
Console.Write(item+" ");
}
Console.WriteLine("");
// 对浮点数排序
float[] floatArray = new float[] { 5.0f, 3.0f, 12.0f, 8.0f, 10.0f };
BubbleSorter.FloatBubbleSorter floatSorter = new BubbleSorter.FloatBubbleSorter();
floatSorter.Sort(floatArray);
foreach (float item in floatArray)
{
Console.Write(item + " ");
}
Console.Read();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有