模板方法模式
来源:互联网 发布:不属于java语言特点 编辑:程序博客网 时间:2024/06/05 16:32
AbstractClass是抽象类,其实也就是一种抽象模板,定义并实现了一个模板方法。这个模板方法一般是一个具体方法,他给出了一个顶级逻辑的骨架,
而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。顶级逻辑也有可能调用一些具体方法。
ConcreteClass,实现父类所定义的一个或者多个抽象方法。每一个AbstractClass都可以有任意多个ConcreteClass与之对应,而每一个ConcreteClass
都可以给出这些抽象方法的不同实现,从而使得顶级逻辑的实现各不相同。(AbstractClass是ConcreteClass的抽象父类)
优点:
1 模板方法通过把不变行为搬移到超类,去除子类中的重要代码来体现它的优势。
2 模板方法提供了一个很好的代码复用平台
3 当不变和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法吧这些行为搬移到单一的地方,
这样就帮助子类摆脱重复的 不变的行为的纠缠。
缺点:
因为引入了一个抽象类,如果具体实现过多的话,需要用户或开发人员需要花更多的时间去理清类之间的关系。
//原型模式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using System.Configuration;
namespace yjzcjing
{
class TestPaper
{
public void TestQuestion1()
{
Console.WriteLine("杨过得到,给了郭靖,炼成倚天剑,屠龙刀的玄铁是......a,b,c,d.");
Console.WriteLine("答案是;" + Answerl());
}
protected virtual string Answerl()
{
return "";
}
}
class TestPaperA:TestPaper
{
protected override string Answerl()
{
return "b";
}
}
class TestPaperB:TestPaper
{
protected override string Answerl()
{
return "c";
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("学生A的答案:");
TestPaper stuA = new TestPaperA();
stuA.TestQuestion1();
Console.WriteLine("学生B的答案:");
TestPaper stuB = new TestPaperB();
stuB.TestQuestion1();
Console.Read();
}
}
}
- 深入浅出模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法设计模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式
- 模板方法模式
- 模板方法模式
- miniblink支持Web Components的Document.registerElement了
- Centos的安装、配置和使用
- 操作系统的基本概念
- 获取元素CSS值之getComputedStyle方法熟悉
- Libgdx之Window Dialog 窗口和对话框
- 模板方法模式
- (补)虚数的运算一(成员函数中的函数运算符重载)
- c语言小知识点总结
- 小白笔记-------------------------openssl(ca)
- 第十二周项目三-数组类运算的实现
- ubuntu12.04 putty的安装
- 实现淘宝和QQ ToolBar透明渐变效果
- 虚表探索
- eclipse导入外部java程序时,中文部分出现乱码