2,3,4,5,6,7,8,9,10,11,12,13,14
当前位置: 首页  - 作者"沐尘"  - 列表 - 第11页
设计模式05 |抽象工厂模式

05 |抽象工厂模式

现在我们假设一种场景,有个水果商人,他想买一些水果,包括苹果、香蕉、西红柿,这时候使用工厂模式我们只要像苹果工厂、香蕉工厂、西红柿工厂提出订单即可,水果自然就生产出来了,但是如果这时候,商人为了扩大档次,想要进口美国的上面三种水果,这时候如果还是使用工厂模式,就不得不向美国的三家水果工厂提出订单,如果这时候又要日本的水果,又要创建三个日本

设计模式04 |工厂模式

04 |工厂模式

工厂模式又叫做多态工厂模式。工厂模式的核心是在简单工厂模式之上在封装一个抽象工厂类,从而将创建工作推迟到抽象工厂类的子类中,这样做的最大好处是使工厂模式符合开闭原则。即在新增一个产品时,不再是修改具体工厂类的成员函数了,而是通过抽象工厂类派生出一个具体工厂类,在具体工厂类中实现新产品的生产。总之一句话就是:简单工厂模式+开闭原则=工厂模式

设计模式03 |简单工厂模式

03 |简单工厂模式

简单工厂模式又叫做静态工厂方法模式。它的核心思想就是用一个工厂,根据输入的条件不同,从而产生不同的类,然后根据不同类的virtual函数得到不同的结果,这就理所当然的要求被创建的实例要具有共同的父类。优点:工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工

设计模式02 |设计模式的六大原则

02 |设计模式的六大原则

关注微信公众号:码客资源网,获取更多内容1、开-闭原则设计模式的核心原则就是开闭原则,即对扩展开放,对修改关闭。意思就是说,一个好的代码,可以在不修改源代码的情况下,扩展你的功能,这种代码具有一定的稳定型和扩展性。实现开闭原则的关键就是抽象化。在开闭原则中不允许修改的是抽象的类或接口,允许扩展的是具体的实现类。2、里氏代换原则里氏代换原则

设计模式01 |设计模式概要

01 |设计模式概要

关注微信公众号:码客资源网,获取更多内容首先我们要明白一个概念,那就是什么是设计模式?设计模式是一套被反复使用、多数人知晓的代码设计经验的总结。使用设计模式,有利于提升代码的复用性、阅读性以及可靠性。标准定义为:**设计模式就是一种在特定环境中解决特定问题的一种方案。1、设计模式根据目的可分为三种: -创建型:主要用于创建对象 - 结构

数据结构与算法12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?

12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?

上一节我讲了冒泡排序、插入排序、选择排序这三种排序算法,它们的时间复杂度都是 O(n2),比较高,适合小规模数据的排序。今天,我讲两种时间复杂度为 O(nlogn) 的排序算法,归并排序和快速排序。这两种排序算法适合大规模的数据排序,比上一节讲的那三种排序算法要更常用。归并排序和快速排序都用到了分治思想,非常巧妙。我们可以借鉴这个思想,来

数据结构与算法11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?

11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?

排序对于任何一个程序员来说,可能都不会陌生。你学的第一个算法,可能就是排序。大部分编程语言中,也都提供了排序函数。在平常的项目中,我们也经常会用到排序。排序非常重要,所以我会花多一点时间来详细讲一讲经典的排序算法。排序算法太多了,有很多可能你连名字都没听说过,比如猴子排序、睡眠排序、面条排序等。我只讲众多排序算法中的一小撮,也是最经典的、

数据结构与算法10 | 递归:如何用三行代码找到“最终推荐人”?

10 | 递归:如何用三行代码找到“最终推荐人”?

推荐注册返佣金的这个功能我想你应该不陌生吧?现在很多 App 都有这个功能。这个功能中,用户 A 推荐用户 B 来注册,用户 B 又推荐了用户 C 来注册。我们可以说,用户 C 的“最终推荐人”为用户 A,用户 B 的“最终推荐人”也为用户 A,而用户 A 没有“最终推荐人”。一般来说,我们会通过数据库来记录这种推荐关系。在数据库表中,我

数据结构与算法09 | 队列:队列在线程池等有限资源池中的应用

09 | 队列:队列在线程池等有限资源池中的应用

我们知道,CPU 资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致 CPU 频繁切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件环境,来事先设置的。当我们向固定大小的线程池中请求一个线程时,如果线程池中没有空闲资源了,这个时候线程池如何处理这个请求?是拒绝请求还是排队请求?各种

数据结构与算法08 | 栈:如何实现浏览器的前进和后退功能?

08 | 栈:如何实现浏览器的前进和后退功能?

浏览器的前进、后退功能,我想你肯定很熟悉吧?当你依次访问完一串页面 a-b-c 之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面 b 和 a。当你后退到页面 a,点击前进按钮,就可以重新查看页面 b 和 c。但是,如果你后退到页面 b 后,点击了新的页面 d,那就无法再通过前进、后退功能查看页面 c 了。假设你是 Chrome 浏览

点击下拉
用户登录