这篇文章,是在软考过程中总结的:设计模式就考几点:定义接口或抽象类(前提需要我们了解该模式用的接口还是抽象类,考题中的图一般都画成抽象类,但代码可能是实现接口)、实现接口或抽象类的关键字、最后压轴的就是设计模式的核心——眼,也就是该设计模式的精华之处在代码中的体现。
既然知道了它怎么出招,后面的事就容易了......所以总结了这篇文章,和大家一起共勉。
参考文献:《Head First》+3年真题,语言:Java。内容:考频较高的设计模式(先拿常考的试水)。
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
<span style="font-family:KaiTi_GB2312;font-size:18px;">class Resume implements Cloneable{ //对应类图ConcretePrototype ... public Object Clone() { Resume obj=new Resume(this.work)//定义Clone(); ... return obj; } } class WorkResume{ //客户端 Static void Main(string[] args) { Resume a =new Resum("zhaohan"); ... Resume b=(Resume)a.Clone();//复制a的信息*******************眼******************************** } } </span>
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
<span style="font-family:KaiTi_GB2312;font-size:18px;">class TissueMachine { State soldOutState,noQuarterState,hasQuarterSate...; state=soldOutState; //最初纸巾机为空 int count =0; //纸巾数为零 public TissueMachine(intnumbers) { ............ } public State getHasQuarterState() { return hasQuarterState; } public State getNoQuarterState() { return noQuarterState; } . . . . } class NoQuarterState implements State //对应类图ConcreteState { TissueMachine tissueMachine; public void insertQuarter() //无钱状态投入硬币 { tissueMachine.setState(tissueMachine.getHasQuarterState());//状态改变到有硬币的状态*****眼**** } } </span>
允许你将对象组合成树型结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
<span style="font-family:KaiTi_GB2312;font-size:18px;">class Menu extends MenuComponent { private List<MenuCompent>menuComponents=new ArrayList<MenuComponent>(); public Menu(string name) { this.name=name; } <span style="color:#ff0000;">public void add(MenuComponent menuComponent) { menuComponents.add(menuComponent)//*******************眼******************************** }</span> public void print() { system.out.print("\n"+getName()); system.out.print(","+"....."); Iterator iterator=menuComponents.iterator(); while(iterator.hasNext()) { MenuComponent menuComponent=(MenuComponent)iterator.next(); menuComponent.print(); } } }</span>
这篇文章主要是整理出了一套复习设计模式的一个思路,根据它的考点,有针对性的突破,并在过程中真正的有所收获,这是我所想达到的效果。