状态会话Bean和无状态会话Bean的区别

 

   今天看一个《head first design pattern》 书的第一章。发觉这本书真的和别人说的一样的是一本好书呀。难怪获得JOLT大奖。
      策略模式:就是把不变的东西封装,把变的东西通过代理实现,下面的例子是原书的例子
  假设我们要设计一个鸭子游戏,那我们设计一个超类Duck
Duck 有这些属性(是一个抽象类)
quack()
swim()
display()
//  外观是绿头 } //  鸭子的其他方法
          MallardDuck继承了Duck  
       display() 
{
         
// 外观是绿头 }
    RedheadDuck继承了Duck
     display() 
{
       
// 外观是红头 }
由于某些原因要让有的鸭子会叫和会飞,一开始想在Duck超类上添加fly()和quack();看上去好想没有什么问题,但是所有的鸭子都会fly()和quack()吗?想想也是呀假鸭和聋哑就不会quack
而且每一只鸭的fly和quack可能不一样那么怎么解决了。引用策略模式():
   把fly的行为封装在FlyBehavior接口,同样把quack的行为封装在QuackBehavior接口
public abstract class Duck {
  FlyBehavior fl yBehavior;
  QuackBehavior quackBehavior;
  
public Duck() {
}

  
public abstract void display();
  
public void performFly() {
  fl yBehavior.fl y();
}

  
public void performQuack() {
  quackBehavior.quack();
}

  
public void swim() {
   System.out.println(“All ducks fl oat, even decoys
!”);
}

}

  这里用到了oo的多态
继承Duck类的子类在实例化通过set##方法来把quackBehavior,QuackBehavior的实例动态加载
flybeh
  
 
FlyBehavior的行为不一定只能给鸭,给鸡给鸟呀QuackBehavior也是同样的
上面的就是strategy pattern 
   其实我有个想法(实现上面的问题的方法):
public abstract class Duck {
   
public Duck() {
}

  
public abstract void display();
  
public adstract void performFly();
  
public abstarct void performQuack() ;
 
  
public void swim() {
   System.out.println(“All ducks fl oat, even decoys
!”);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值