备忘录模式是一种比较重要的设计模式,如果程序执行错误,我们可以恢复restore之前的状态,就好像我们在编辑word文档,需要撤销原操作,那么我们使用ctrl+Z。
在数据库操作中,这个模式用的非常多!
说白了就是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。
» Read more: 备忘录模式C++实现
备忘录模式是一种比较重要的设计模式,如果程序执行错误,我们可以恢复restore之前的状态,就好像我们在编辑word文档,需要撤销原操作,那么我们使用ctrl+Z。
在数据库操作中,这个模式用的非常多!
说白了就是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。
» Read more: 备忘录模式C++实现
观察者模式是非常重要的一个模式,初次遇到该模式,想了很久没有想通应该怎么做。
其实原理很简单:就是当被观察者(Observable)发生变化,然后就会某种数据方式通知(Notify)观察者(Observer),Notify的方式很多,比如我们将Observer 放到一个list或者set中,分别调用Observer的update()这样实现通知。
» Read more: 观察者模式C++实现
这个坑想了很久,但是一直没时间填,今天抽出一个周六,把之前的草稿完成!
我们知道在linux中如果用户程序发生错误,kernel会终止程序运行,并发出segment fault错误。
这种实现其实就是在用户空间实现了异常栈的操作。
下面我来说一下JOS的用户空间的异常栈设计。
策略模式形式上其实和装饰者模式,工厂模式都很像,装饰者模式是在原有核心的业务上添加新的业务,工厂模式是在构造函数中传入新类类名,然后返回新的类。而策略模式则是将策略类传入到执行类里,达到执行策略的目的!
工厂模式和策略模式有很多相通的地方。都是创造类。
不同点在于:工厂模式有可能各个类的方法名和个数差别很大,注重不同对象的创建。策略模式 一般用于多个类的方法名都相同,但是实现方式不同 注重多个对象的相同行为:屏蔽方法名相同,算法实现细节不同之间的差异
» Read more: 策略模式及其拓展 C++实现
装饰者模式就是在原来类的基础上添加额外的功能,这种方式主要是为了应对继承带来的的类膨胀。
装饰者模式比起继承更加灵活,一般来说,基类是抽象的Component还有一个具体的concreteComponent。这个模式的核心就是继承Component的Decorator类。,然后由Decorator类统一管理拓展的业务,也就是新增加的功能。