设计模式入门笔记
来源:互联网 发布:手机淘宝装修软件 编辑:程序博客网 时间:2024/05/19 19:40
FlyBehavior 接口及两个实现类FlyWithWings、FlyNoWay
<pre name="code" class="java">public interface FlyBehavior{ public void fly();}public class FlyWithWings implements FlyBehavior{ public void fly(){ System.out.println("I can flying !"); }}public class FlyNoWay implements FlyBehavior{ public void fly(){ System.out.println("I cannot flying !"); }}public class FlyRocketPowered implements FlyBehavior{ public void fly(){ System.out.println("I am flying with rocket !"); }}
父类Duck
<pre name="code" class="java">public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public abstract void display(); public void performFly(){ flyBehavior.fly(); } public void performQuack(){ quackBehavior.quack(); } public void swim(){ System.out.prilntln("all ducks float,even decoys !"); <span style="font-family: Arial, Helvetica, sans-serif;"> </span><pre name="code" class="java"> } public void setFlyBehavior(FlyBehavior fb){ flyBehavior=fb; } public void setQuackBehavior(QuackBehavior qb){ quackBehavior=qb; } }
子类MallardDuck、ModelDuck
public class MallardDuck extends Duck(){ public MallardDuck(){ quackBehavior=new Quack(); flyBehavior=new FlyWithWings(); } public void display(){ System.out.println("I am a real mallard duck !"); }}public class ModelDuck extends Duck(){ public ModelDuck(){ quackBehavior=new Quack(); flyBehavior=new FlyNoWay(); } public void display(){ System.out.println("I am a real model duck !"); }}
测试类
<pre name="code" class="java">public class MiniDuckSimulator{ public static void main(String[] args){ Duck mallard=new MallardDuck(); mallard.performFly(); <span style="font-family: Arial, Helvetica, sans-serif;"> //I can flying!</span> mallard.performQuack(); //Quack Duck model=new ModelDuck(); model.performFly(); //I cannot flying! model.setFlyBehavior(new FlyRocketPowered());<span style="font-family: Arial, Helvetica, sans-serif;"> </span><pre name="code" class="html"> model.performFly(); //I am flying with rocket ! }}
**来自head first设计模式 的第一章节代码整理。
0 0
- 设计模式入门笔记
- 设计模式学习笔记之设计入门
- 《Head First 设计模式》学习笔记一:设计模式入门
- [笔记]设计模式入门-设计模式的原则
- 设计模式入门--设计模式学习笔记<一>
- Head First 设计模式笔记--入门
- Appium+Python+PO 设计模式 入门笔记
- 架构师入门笔记四 初识多线程设计模式
- 《Head First设计模式》笔记————设计模式入门
- .net设计模式入门
- 书评--设计模式入门
- 书评--设计模式入门
- 书评--设计模式入门
- 书评--设计模式入门
- 书评--设计模式入门
- 书评--设计模式入门
- 书评--设计模式入门
- 书评--设计模式入门
- CodeForces 599B <二分查找-->
- textview自适应高度的计算方法
- [Magento SQL] 查询指定SKU一段时间范围内的浏览量
- 环境监测——扬尘噪声
- 优化listview包含progressbar滑动时数据错误和单击局部更新
- 设计模式入门笔记
- 在文档类中控制舞台上影片剪辑
- 如何提高代码可读性、可维护性
- Android获取流量信息
- Cannot create a secure XMLInputFactory
- sys.setdefaultencoding()使用前,必须reload(sys)
- 基础篇:android动画效果之scale使用
- vs2013遇到“编译器中发生内部错误”的解决方法
- 【CodeForces】[599B]Spongebob and Joke