`
风雪涟漪
  • 浏览: 508523 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9066
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18475
社区版块
存档分类
最新评论

详解 策略模式 追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(); 

 

 

3
1
分享到:
评论
4 楼 chenlb 2008-05-29  
有点意思.
3 楼 Kaede 2008-03-14  
不好意思 这里有个Bug 我发的是大拇指 向上的啊~
别误会啊
2 楼 Kaede 2008-03-14  

大哥这样举例哦!
唉!追MM要是可以红代理模式就好了
1 楼 sonycon 2008-01-29  
感谢楼主的经验分享

相关推荐

Global site tag (gtag.js) - Google Analytics