详解 策略模式 追MM,附:追MM有危险,请谨慎.

 引用:STRATEGY—跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的去海边浪漫最合适,但是目的都是为了得到MM的芳心,我的追MM锦囊中有好多Strategy哦。

  策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。

以上为转载 .

看了这个果然,有助于提高对设计模式得理解.但讲得比较大概.我想详细得讲解一下.
跟MM 约会的活动,开始的时候要有一定计划,所谓得计划就是要有一定的目标,首先要明确活动的大体框架,看电影?买东西?滑雪?,想好了之后我就写个追MM得基本类把.代码设计如下:

public class CheasingGirls{ 
public void movie(){ 
//活了那么久了 ,怎么和MM看电影,自己想去. 
} 
public void shopping(){ 
//活了那么久了 ,怎么和MM购物自己想去. 
} 
} 

 

哈哈.基本计划有了,具体想如果 追 MM A 得话,我们就可以写一个类来继承与它.

public class CheasingGirlsA extends CheasingGirls{ 
//可以重新定计划(覆盖父方法) 
public void movie(){ 
//活了那么久了 ,怎么和MM看电影,自己想去. 
} 
//可以重新定计划(覆盖父方法) 
public void shopping(){ 
//活了那么久了 ,怎么和MM购物自己想去. 
} 
} 

 
但是问题出来了...对我这样老实的人来说 ,一个也就够了,对 想追很多MM得人来说,那就很辛苦了..还可能出现问题,并不是每个MM都喜欢看电影,滑雪等等.所以我们继承CheasingGirls类就会出现.要覆盖 父方法的情况 如追MM B

public class CheasingGirlsB extends CheasingGirls{ 
//可以重新定计划(覆盖父方法) 
public void movie(){ 
//什么都不做 
} 
//可以重新定计划(覆盖父方法) 
public void shopping(){ 
//什么都不做 
} 
} 

 
如果我要追 几十个.那都要重写 .要累死啊 ..所以 我就把,movie 和 shopping的方法 改为用接口来做 .

public interface Movie{ 
public void doMovie(); 
} 
public interface Shopping{ 
public void doShopping(); 
} 

 
改变下我追MM的计划类

public class CheasingGirls{ 
Movie movie; 
Shopping shopping; 
public void movie(){ 
movie.doMovie(); 
} 
public void shopping(){ 
shopping.doShopping(); 
} 
} 

 

看看这样设计带来的好处,我可以写几套不同的看电影计划购物计划,而对代码没有影响.可以重用 ,多方便啊.....以后组组合合就可以了.还回为追MM发愁啊?
代码如下是:

//电影方案1 
public class movie1 implements Movie{ 
public void doMovie(){ 
//方案一具体 实施方案. 
} 
} 

 
如果我们在泡MM A 之前,定义好计划得话 代码如下

public class CheasingGirlsA extends CheasingGirls{ 
public CheasingGirlsA(){ 
movie = new movie1(); 
} 
} 

 但这么做 有缺点,,一旦 MM 不喜欢的话,临时就不能换计划了......MM 真难搞定呢...所以我们就必须想个方法,在约会时可以改变计划.
我们就在约会得时候改变.
改变下我追MM的计划类

public class CheasingGirls{ 
Movie movie; 
Shopping shopping; 
public void movie(){ 
movie.doMovie(); 
} 
public void shopping(){ 
shopping.doShopping(); 
} 
public void setMovie(Movie movie){ 
this.movie = movie; 
} 
} 

 
在追MM得过程中 我就可以这么写


^_^.看电影得计划成功了....希望大家都可以追成你心中得MM.

CheasingGirls cheasingGirls = new CheasingGirls(); 
//看电影计划 movie1 
cheasingGirls .setMovie(new movie1()); 
cheasingGirls .doMovie(); 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值