徐子烊

  • 主页
  • 语雀
所有文章 关于我

徐子烊

  • 主页
  • 语雀

设计模式之桥接模式

2019-06-02

桥接模式的作用是将类的功能层次结构和类的实现层次结构连接起来

假设现在有个Something类,当我们想向它添加新功能时,可以编写一个它的子类,然后在子类中添加新的功能。这样就构成了类的功能结构。

当我们定义了一个抽象类,子类负责去实现这些抽象方法时,也形成了一个层次结构,这就叫类的实现层次结构。注意这里功能并没有增加,子类是为了具体实现抽象父类定义的方法。

试想有一个笔类,我们可以继承笔类,并向其添加画圆、画方等功能,这就是功能层次结构。假如我们要选择笔的颜色,那么我们可以在子类中添加方法来画出不同颜色的圆、方。现在我们要添加新功能画三角形,假设有12种颜色,那么为了添加这一个功能,又得重复写换颜色的12个方法。或者我们想添加新的颜色,那么又得修改所有的子类。这里功能层次结构和实现层次结构混杂在一起,难以扩展。

桥接模式可以将类的功能层次结构和类的实现层次结构分离。做到可以独立的修改功能及实现。

more >>
  • 设计模式
  • 桥接模式
  • 图解设计模式

展开全文 >>

设计模式之抽象工厂模式

2019-05-31

在抽象工厂模式中,不仅有抽象工厂,还有抽象零件和抽象产品。抽象工厂的作用是将抽象零件组装为抽象产品。

more >>
  • 设计模式
  • 抽象工厂
  • 图解设计模式

展开全文 >>

设计模式之建造者模式

2019-05-31

有些时候很难一次性组装具有复杂结构的实例,用于组装复杂结构实例的模式就是建造者模式。

more >>
  • 设计模式
  • 建造者模式
  • 图解设计模式

展开全文 >>

设计模式之原型模式

2019-05-28

在有些时候,我们不能根据类来生成实例,而要根据现有的实例来生成新的实例

  1. 对象种类繁多,无法将它们整合到一个类中时
  2. 难以根据类生成实例时
  3. 想解耦框架与生成的实例时

这种不根据类来生成实例,而是根据实例来生成新实例的模式就是原型模式。

more >>
  • 设计模式
  • 原型模式
  • 图解设计模式

展开全文 >>

设计模式之单例模式

2019-05-28

当想达到以下目的时:

  1. 想确保任何情况下都绝对只有1个实例

  2. 想在程序上表现出只存在一个实例

    就可以使用单例模式。

more >>
  • 设计模式
  • 单例模式
  • 图解设计模式

展开全文 >>

设计模式之工厂模式

2019-05-26

将模版模式用于生成实例,就演变为工厂模式。在工厂模式中,父类决定实例的生成方式,但并不决定要生成的具体的类,具体生成交由子类负责,这就将生成实例的框架和负责实际生成实例的类解耦。

more >>
  • 设计模式
  • 工厂模式
  • 图解设计模式

展开全文 >>

设计模式之模版模式

2019-05-23

父类定义了程序的模版,子类实现抽象方法并决定具体的处理,这种模式就是模版模式。

more >>
  • 设计模式
  • 模版模式
  • 图解设计模式

展开全文 >>

设计模式之适配器模式

2019-05-23

在编程时,经常会出现现有程序无法直接使用,需要做适当的变换之后才能使用的情况。这种用于填补”现有程序”和”所需程序”之间的差异的设计模式就是适配器模式。

适配器模式有两种:

  1. 类适配器模式(使用继承)
  2. 对象适配器模式(使用委托) more >>
  • 设计模式
  • 适配器模式
  • 图解设计模式

展开全文 >>

设计模式之迭代器模式

2019-05-23

当在java中遍历一个数组时,可以使用下标的方式。但是当底层存储结构变化时(比如换成链表),这种方式就不管用了。通过将循环变量i抽象化、通用化后形成迭代器,这样就可以通用于各种存储结构。这种模式就叫做迭代器模式。

more >>
  • 设计模式
  • 迭代器模式
  • 图解设计模式

展开全文 >>

PAT完结撒花&总结

2019-05-21

从3月份开始,现在快5月底了,终于刷完了PAT甲级的所有题(其实还有一题1057 stack,不过那题用到树状数组什么的,不准备做了)。目前排名153,满分的有139人。花了大概两个半月时间,其中经历了研究生复试,五一,毕设等大小事,刷的有快也有慢,好歹算是做完了。原本打算毕业前刷完的,现在大概还剩了一个月左右的时间,算是超额完成吧。说起来其实很惭愧,大二大三就应该做这些事的,混到快毕业了才刷完。

总的感受就是PAT甲级也没那么难。考来考去也就是二叉树、dijkstra、深搜这些东西。只有少量的题是拿到手完全没思路的,很多题稍微改改就成了另一题。动态规划几乎没有(即便有的话也可以不用动态规划解决)。说白了就是考熟练度罢了。当然其中有些题还是比较坑的,有些是测试点坑,有些是时间空间限制很严格,不一而足。测试点坑的,上网找坑点,时间限制严格的,把cin/cout换成printf/scanf往往有奇效。整套刷下来代码能力提升还是很大的。

最近打算开的新坑:Leetcode,playframework,设计模式。加油吧。

  • PAT
  • 随笔

展开全文 >>

« Prev1234…11Next »
© 2020 徐子烊
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • PAT
  • 多项式
  • dijkstra
  • 图
  • 树
  • 最大子序列
  • 进制转换
  • 二分
  • dfs
  • 连通分量
  • 模拟
  • STL
  • 大整数
  • 需复习
  • 链表
  • 贪心
  • 动态规划
  • 子序列
  • 二叉树
  • LCS
  • 栈
  • 排序
  • 质因数
  • 树状数组
  • 完全二叉树
  • 整数溢出
  • AVL树
  • 深搜
  • 哈希
  • bfs
  • 并查集
  • 红黑树
  • LCA
  • 拓扑排序
  • lca
  • 实习
  • bat
  • Leetcode
  • Java并发
  • 线程池
  • 6.824
  • 分布式
  • mapreduce
  • caffe
  • epoll
  • Raft
  • schnorr
  • 密码学
  • 设计模式
  • 单例模式
  • 原型模式
  • 工厂模式
  • 建造者模式
  • 抽象工厂
  • 桥接模式
  • 模版模式
  • 组合模式
  • 策略模式
  • 装饰器模式
  • 迭代器模式
  • 适配器模式

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

很惭愧

只做了一点微小的工作