设计模式之工厂方法

                感觉上个周四距离现在好久远,为什么要说上周四?因为上周四  在下被光荣地临危、不、临时授权、担当了一次活动滴策划者,虽然活动办得差强人意,haha~~just kidding 活动还是很happy的,当然我说的是前面的游戏环节,我们玩了“谁是卧底?”、“我说你猜”等经典的游戏,到底有多经典呐?金田说他“这周都玩了两次这个游戏了”,喜爱之情溢于言表啊偷笑 

     言归正传,后来 我们开始了重头戏——设计模式 工厂三姐妹,因为十三期的师弟没有接触过这些知识二来因为自己学艺不精,所以当时讲得有些吃力,这就尴尬了、是吧;为了挽回一点颜面,当下决定回去写一篇博客,但是(经常说“但是”不好)不过因为因为一直奋战在ITOO、这个总结没有及时地动手去做,不过现在有时间了、so  here we go~~


lass LeiFeng //雷锋类{
	
	public void Sweep(){
		Console.WriteLine("扫地");
	}
	
	public void Wash(){
		Console.WriteLine("洗衣");
	}
	
	public void BuyRice(){
		Console.WriteLine("买米");
	}
	
}

//大学生:继承雷锋类 具有了父类雷锋的属性和方法
class Undergraduate:LeiFeng{}

//志愿者:继承雷锋类 
class Volunteer:LeiFeng{}

//雷锋工厂 把工厂类抽象出一个接口
//有唯一的方法:创建抽象产品的工厂方法
interface IFactory{
	LeiFeng CreateLeiFeng();
}

//大学生:实现工厂接口 生产具体产品
class UndergraduateFactory:IFactory{
	
	//CreateLeiFeng 上方接口的方法
	public LeiFeng CreateLeiFeng(){
		return new Undergraduate();
	}
}

//志愿者:实现雷锋工厂接口
class VolunteerFactory:IFactory{
	public LeiFeng CreateLeiFeng(){
		return new Volunteer();
	}
}

//客户端调用 大学生学雷锋服务人民
//强制多态,强制类型转换 向上类型的转换
IFactory factory =new UndergraduateFactory();
leiFeng student=factory.CreateLeiFeng();

student.BuyRice();
student.Sweep();
student.Wash();</span>

        写了一些注释,大家这么clever代码应该很容易理解;比较新的知识点是:强制多态,强制多态的原则:将值集较小(占用存储空间较小)的类型变换成值集包含了前者(占用存储空间大)的类型,反之可能发生对值得损伤;由这个引出类向上转型向下转型

     向上转型:就是咱们这里的

IFactory factory =new UndergraduateFactory();</span></span>

     解释这个知识的时候网络上习惯于用“动物和狗”这个例子;这里再用多没有创意,今天拿“动物和猫”做例子!父类为动物,子类为猫,父类有一个跑()的方法,猫继承并覆盖了一个跑的方法,在子类重写()该方法:

animal a =new cat();//向上转型
a.run();//调用猫的方法</span>
    这是对 动物 方法的扩充,即 动物 的对象可访问 狗 从 动物 中继承来的和 狗 复写动物的方法;这个例子中有运行效果C#——向上转型


再举一下软工视频里面的例子:

         


          这是讲的是“装饰模式”,装饰模式也是比较重要的一个设计模式,当然咱们这里是不讲的,只是借用一些例子来帮助大家理解;product是一个接口,Ice、Chocolate还有Milk等类实现product接口,除了product中生产咖啡他们还有各自添加佐料的方法,还是符合强制多态原则的;

   当父类引用指向子类对象时,如果是调用非静态方法,此方法就按子类的运行。如果调用的是成员变量,此变量就是父类的值。向下转型时不是肯定能成功的。打个比方,所有的狗一定是动物,但是动物不一定都是猫,你得先在代码中判断一下。

      莫名这个knowledge涉及到了静态方法和非静态方法;这个下篇写吧、博客容量大了make people tired easily 

thanks for your time  

  

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值