模板模式与原型模式

       模板方法:这个模式挺简单的,基本上就是利用继承的特点,把子类中相同的部分放到父类中,再由父类提供一个方法,由子类去实现这个方法。当遇到子类有大量相同部分时,可以考虑该方法。


这是父类和子类的代码:

abstract class AbstractClass
{
	protected abstract void PrimitiveOperation1();   //由子类去实现的
	protected abstract void PrimitiveOperation2();
	
	public void TemplateMethod()           //子类实现的方法,统统放到这个方法中。
	{
		PrimitiveOperation1();         
		PrimitiveOperation2();
		Console.WriteLine("");
	}
}
class ConcreteClassA:AbstractClass
{
	protected override void PrimitiveOperation1()
	{
		Console.WriteLine("具体类A方法1实现");
	}
	protected override void PrimitiveOperation2()
	{
		Console.WriteLine("具体类A方法2实现");
	}
}
class ConcreteClassB:AbstractClass
{
	protected override void PrimitiveOperation1()
	{
		Console.WriteLine("具体类B方法1实现");
	}
	protected override void PrimitiveOperation2()
	{
		Console.WriteLine("具体类B方法2实现");
	}
}

static void Main(string [] args)
{
      AbstractClass c;
      c=new ConcreteClassA();
      c.TemplateMethod();
      c=new ConcreteClassB();
      c.TemplateMethod();
     Console.Read();
}
           

    原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。而拷贝在C#中使通过MeberwiseClone 方法来实现的。它只能对值类型进行拷贝。引用类型的拷贝就需要我们自己去实现了。

看大话里的代码:

 private Resume (WorkExperience work)     //只要生成实例,就初始化。//采用Clone方法,不仅实例化了对象,
                                              //而且连workeperience对象的结构一块复制了,值类型直接复制数据,引用类型也复制引用了
    {
        this.work = (WorkExperience)work.Clone();
    }
           我觉得这段代码用的十分巧妙,不仅使引用类型复制了,而且连带着引用类型中的值类型也复制了。由此我们可以想到,无论哪种设计模式都可以进行改变的,遇到什么问题,解决什么问题好了。


      结语:设计模式不是一种模式,而是编程的法则,正式通过这些模式把面向对象里的法则用的熟练再熟练。


        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值