策略模式
来源:互联网 发布:mac系统优化工具 编辑:程序博客网 时间:2024/06/05 13:31
书上的例子1:
package com.jane.Strategy;/** * Created by jane on 16/5/29. */interface FlyBehavior{ public void fly();}interface QuackBehavior{ public void quack();}class FlyWithWings implements FlyBehavior{ @Override public void fly(){ System.out.println("I'm flying!"); }}class Quack implements QuackBehavior{ @Override public void quack() { System.out.println("Quack"); }}class MuteQuack implements QuackBehavior{ @Override public void quack() { System.out.println("<<Silence>>"); }}class Squeak implements QuackBehavior{ @Override public void quack() { System.out.println("Squeak"); }}class FlyNoWay implements FlyBehavior{ @Override public void fly() { System.out.println("I can't fly"); }}abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public Duck(){ quackBehavior = new Quack(); flyBehavior = new FlyWithWings(); } public abstract void display(); public void performFly(){ flyBehavior.fly(); } public void performQuack(){ quackBehavior.quack(); } public void swim(){ System.out.println("All ducks float,even decoys!"); }}class MallardDuck extends Duck{ FlyBehavior flyBehavior; QuackBehavior quackBehavior; public MallardDuck(){ quackBehavior = new Quack(); flyBehavior = new FlyWithWings(); } public void display(){ System.out.println("I'm a real Mallard duck"); }}public class MiniDuckSmulator{ public static void main(String[] args) { Duck mallard = new MallardDuck(); mallard.performQuack(); mallard.performFly(); }}
运行结果:
《Head First 设计模式》这书不错,虽然搞半天没看明白
书上总结的要点:
1、知道OO记住,并不在于让你设计出良好的OO系统
2、良好的OO设计必须具备可复用、可扩充、可维护三个特性
3、模式可以让我们建造出具有良好OO设计质量的系统
4、模式被认为是历经验证的OO设计经验
5、模式不是代码,而是针对设计问题的通用解决方案,你可把它们应用到特定的应用中
6、模式不是被发明,而是被发现
7、大多数的模式和原则都允许系统局部改变独立于其它部分
8、我们常把系统中会变化的部分抽出来封装
9、模式让开发人员之间有共享的语言,能够最大化沟通的价值
谷歌到的策略模式相关文章,回头看
http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html
0 0
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- java数据结构之顺序表
- PXE+kickstart 无人值守批量装机(ftp推送方式)
- Leetcode 160. Intersection of Two Linked Lists
- 菜鸟第一篇文章,用于自勉。
- DX名词解释:深度缓存(depth buffer)
- 策略模式
- Android1.6 启动init.c分析
- 冒泡,插入,选择,归并,快速排序的C++实现
- jQuery 事件机制源代码分析1——jQuery事件机制整体架构
- css
- C语言内存分配问题和C语言中的内存
- Linux驱动开发、19-I2C子系统之客户驱动分析与移植
- ubutu安装配置jdk1.8
- 第十四周项目60-两个成员的类模版