![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
爱记录的朱利安
这个作者很懒,什么都没留下…
展开
-
如何实现GoF《设计模式》一书中备忘录模式的例子?
背景如图,这是GoF的《设计模式》一书第五章中Memento备忘录模式动机一节的例子。应用介绍摘自Gang of Four的《设计模式》第五章行为型模式的备忘录模式:例如,考虑一个图形编辑器,它支持图形对象之间的连线。用户可用一条直线连接两个矩形,者两个矩形仍能保持连接。在移动过程中,编辑器自带伸展这条直线以保持该连接。完成效果原书没有给出实现代码,所以我基于Java语言实现一个。可拖拽任意一个矩形移动位置。可按Ctrl+Z撤销操作,回到图形上一次的位置。下面有完整代码和注释,读者可先原创 2020-10-07 23:40:29 · 120 阅读 · 0 评论 -
Gof设计模式中介者模式The quick brown box实现详解
动机如图,这是Gof《设计模式》一书第五章中Mediator中介者模式动机一节的例子。原文:考虑一个图形用户中对话框的实现。对话框使用一窗口来展现一系列的窗口组件,如按钮、菜单和输入域等。如下图。实现效果这是我的实现效果。点击font choose按钮,弹出对话框界面。选择效果后,点击确定。文本区域的字体已改变。完整代码简要思路:我们自定义两个类 FontChooser 和 FontChooserDialog 。FontChooserDialog 继承自 JDialog,原创 2020-09-25 22:54:34 · 249 阅读 · 0 评论 -
抽象工厂和单例模式能结合吗?
因为工厂类这个东西用来生成产品。那么一般我们只留一个工厂类使用就好了。那我们来尝试一下结合单例模式的抽象工厂。首先定义一个抽象工厂。这里抽象工厂的类图产品系列代码public interface Product { public void makeSerivice();}public class AProduct implements Product { @Override public void makeSerivice() { System.out.原创 2020-09-14 21:53:26 · 1239 阅读 · 0 评论 -
C++单例抽象工厂模式
#include <iostream>#include <memory>#include <stdexcept>#include <string>using namespace std;class Scrollbar;class WindowFactory {public: static void setFactory(std::string const&); static Scrollbar* createScro转载 2020-09-14 21:34:24 · 280 阅读 · 0 评论 -
位运算的使用小技巧
对于位运算的学习,可以通过位运算替换一些常用操作的使用场景来学习,如奇数偶数判断、两个变量交换、实现加法。如果面试官要求不能使用常规的方法解决,那我们如何想起一些清奇的思路呢?位运算也能起到同样乃至性能更好的效果。1.奇数偶数判断 1 2 3 4 5 if(n %2 ==1){ //是奇数odd }else{ //是偶数even } 可以使用&位运算 1 ...原创 2020-08-30 16:10:45 · 195 阅读 · 0 评论 -
HeadFirst设计模式第11章代理模式设计谜题>>ImageProxy类似乎有两个有条件语句控制的状态
问题来自HeadFirst设计模式第11章代理模式468页的设计谜题:ImageProxy类似乎有两个有条件语句控制的状态,你能否用另一个设计模式清理这样的代码?你要如何重新设计ImageProxy?思路:我们可以使用状态模式:实现两个状态,分别是ImageLoaded和ImageUnloaded。然后把if语句内的代码放进去各自的状态中。一开始的状态是ImageLoaded,当ImageIcon取回后就转换道ImageLoaded状态。下面是自己写的一段参考代码State类扩展Ico.原创 2020-08-30 15:42:14 · 155 阅读 · 0 评论