十六、状态模式
状态模式(State Pattern)中,类的行为是基于它的状态改变的
创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
通过状态改变行为
public class StatePatternDemo { public static void main(String[] args) { Context context = new Context(); StartState startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); } }
使用 Context 来查看当状态 State 改变时的行为变化。
十七、适配器模式
使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的
借助适配器,当前设备无法播放,利用适配器调用高级设备
public class MediaAdapter implements MediaPlayer { AdvancedMediaPlayer advancedMusicPlayer; public MediaAdapter(String audioType){ if(audioType.equalsIgnoreCase("vlc") ){ advancedMusicPlayer = new VlcPlayer(); } else if (audioType.equalsIgnoreCase("mp4")){ advancedMusicPlayer = new Mp4Player(); } } @Override public void play(String audioType, String fileName) { if(audioType.equalsIgnoreCase("vlc")){ advancedMusicPlayer.playVlc(fileName); }else if(audioType.equalsIgnoreCase("mp4")){ advancedMusicPlayer.playMp4(fileName); } } }
十八、备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
备忘录模式使用三个类 Memento、Originator 和 CareTaker。
Memento 包含了要被恢复的对象的状态。Originator 创建并在 Memento 对象中存储状态。Caretaker 对象负责从 Memento 中恢复对象的状态。
public class CareTaker { private List<Memento> mementoList = new ArrayList<Memento>(); public void add(Memento state){ mementoList.add(state); } public Memento get(int index){ return mementoList.get(index); } }
十九、组合模式
讲对象组合成树形结构
把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。
例如:员工上下级模板类
二十、迭代器模式
是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素
不暴露对象的内部表示
NameRepository implements Container