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