![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Object-Oriented Programming
杨鑫newlfe
算法就是我的灵魂
展开
-
设计模式学习笔记汇总目录
这里的的学习笔记包含JavaSE和J2EE两部分,持续更新中!其中关于学习的参考资料如下:1.菜鸟设计模式2.Head First Design Patterns(书、强烈推荐);3.大话设计模式(书、适合入门);相关的代码下载:GitHub源码设计模式学习笔记 --- 1.简单工厂模式 设计模式学习笔记 --- 2.抽象工厂模式 设计模式学习笔记 --- 3.单...原创 2020-04-28 21:08:53 · 1108 阅读 · 0 评论 -
设计模式学习笔记 --- 25.访问者模式
在访问者模式(Vistor Pattern)中,我们使用了一个访问者类,它改变元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象的操作; 意图:主要将数据结构与数据操作分离; 主要解决:稳定的数据结构和易变的操作耦合问题; 何时使用:需要对一个...原创 2020-04-28 20:48:44 · 311 阅读 · 0 评论 -
设计模式学习笔记 --- 24.模版模式
在模版模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模版。它的子类可以需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为模式; 意图:定义一个操作的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤; 主要解决:一些方法通用,却在每一个子类都重新写了...原创 2020-04-28 17:05:39 · 261 阅读 · 0 评论 -
设计模式学习笔记 --- 23.策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其他算法可以在运行时改变,这种类型的设计模式属于行为模式; 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法; 意图:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换; 主要解决:在有多种算法相似的情况...原创 2020-04-28 16:33:49 · 404 阅读 · 0 评论 -
设计模式学习笔记 --- 22.空对象模式
在空对象模式(Null Object Pattern)中,一个空对象取代Null对象实例的检查。Null对象不是检查空值,而是反应一个不做任何动作的关系; 这样的Null对象也可以在数据不可用的时候提供默认的行为; 在空对象模式中,我们创建了一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建了一个未对该类做任何实现的空对象,该空对象将无缝地使用在需要检查空值的地方;...原创 2020-04-28 15:08:10 · 322 阅读 · 0 评论 -
设计模式学习笔记 --- 21.状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的,这种类型的设计模式属于行为模式; 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态改变而改变的context对象; 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类; 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为;...原创 2020-04-28 02:20:45 · 319 阅读 · 0 评论 -
设计模式学习笔记 --- 20.观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖关系。观察者模式属于行为模式; 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新; 主要解决:一个对象状态改变给其他对象通知到问题,而且要考虑到易用和低耦合,保证高度的协作; 何时...原创 2020-04-27 20:01:17 · 290 阅读 · 0 评论 -
设计模式学习笔记 --- 19.备忘录模式
备忘录模式(Memento Pattern)保存了一个对象的某个状态,以便在适当的时候恢复。备忘录模式属于行为模式; 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态; 主要解决:所谓备忘录模式就是在步破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在之后将对象恢复到原先保存的状态; 何时使用:很多事手...原创 2020-04-27 14:43:02 · 308 阅读 · 0 评论 -
设计模式学习笔记 --- 18.中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性,这种模式提供了一种中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为模式; 意图:用一个中介对象来封装一系列的对象交互,中介者使对象不需要显示地相互吸引引用,从而使其耦合松散,而且可以独立地改变它们之间的交互; 主要解决:对象与对象之间存在大量的关联关系...原创 2020-04-27 11:55:15 · 271 阅读 · 0 评论 -
设计模式学习笔记 --- 17.迭代器模式
迭代器模式(Iterator Pattern)是Java和.Net编程环境中非常常用的设计模式。这种模式用于顺序的访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为模式; 意图:提供一种方法顺序访问一个聚合对象中各个元素,而又无需暴露该对象的内部表示; 主要解决:不同的方式来遍历整个整合对象; 何时使用:遍历一个聚合对象; 如何解决:把...原创 2020-04-27 03:37:33 · 337 阅读 · 0 评论 -
设计模式学习笔记 --- 15.命令模式
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为模式。请求以命令的形式包裹在对象中,并传给调用对象,调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令; 意图:讲一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化; 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如...原创 2020-04-26 20:05:45 · 282 阅读 · 0 评论 -
设计模式学习笔记 --- 14.责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链; 这种模式给予请求的类型,对请求的发出者和接收者进行解耦,这种类型是设计模式属于行为模式; 在这种模式中,通常每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,以此类推; 意图:避免请求发送者与...原创 2020-04-26 16:01:33 · 274 阅读 · 0 评论 -
设计模式学习笔记 --- 12.享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构方式; 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们通过创建5个对象来画出20个分布于不同位置的圆来掩饰这种模式; 意图:运用共享技术有效地支持大量细粒度的对象; ...原创 2020-04-26 11:11:59 · 315 阅读 · 1 评论 -
设计模式学习笔记 --- 11.外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性; 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用; 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加...原创 2020-04-23 20:53:00 · 320 阅读 · 0 评论 -
设计模式学习笔记 --- 9.组合模式
组合模式(Composite Pattern),又叫部分整体模式,适用于把一组相似的对象当作一个单一的对戏那个。组合模式依据树形结构来组合对象,用来表述部分遗迹整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构; 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式; 意图:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用...原创 2020-04-23 01:21:31 · 305 阅读 · 0 评论 -
设计模式学习笔记 --- 8.过滤器模式
过滤器模式(Filter Pattern)或标准模式(Criterial Pattern)是一种设计模式,这种模式允许人员使用不同的标准来过滤一组对象,通过逻辑运算以解偶的方式把它们连接起来; 这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准; 实战: 我们创建一个Person对象,Cirteria接口和实现该接口的实体类,来过滤Person对...原创 2020-04-22 00:36:00 · 297 阅读 · 0 评论 -
设计模式学习笔记 --- 7.桥接模式
桥接(Bridge)模式适用于把抽象化淤实现解偶,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解偶; 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类;这两种类型的类可以被结构化改变而互不影响; 意图:将抽象部分与实现部分分离,使它们都可以独立的变化; 主要解决:在有多种可能会变化的...原创 2020-04-21 20:49:44 · 331 阅读 · 0 评论 -
设计模式学习笔记 --- 6.适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁;这种设计模式属于结构型模式,它结合了两个独立接口的功能; 这种模式涉及到一个单一类,该类负责加入独立或者不兼容的接口功能;例如读卡器是作为内存卡和笔记本之间的适配器。 意图:将一个类接口换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容不能一起工作的那些类可以一起工作; 主要解决...原创 2020-04-21 14:24:23 · 315 阅读 · 0 评论 -
设计模式学习笔记 --- 5.原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式; 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆;当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据仓库操作以后被创建。我们可以缓存该对戏那个;在下一次请求时,返回它的克隆,在需要的时候更新...原创 2020-04-20 20:03:17 · 331 阅读 · 0 评论 -
设计模式学习笔记 --- 4.建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建一个复杂的对象。这种类型的设计模式属于创建模式,它提供了一种创建对象的最佳方式; 一个Builder类会一步一步构造最终的对象,该Builder类是独立于其他对象的; 意图:讲一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示; 主要解决:主要解决在软系统中,有时候面临着“一...原创 2020-04-20 16:20:40 · 305 阅读 · 0 评论 -
设计模式学习笔记 --- 3.单例模式
单例模式(Singleton Pattern)是Java最简单设计模式之一。这种类型的设计模式属于创建型模式,它提供一种常见对象的最佳方式。 这种模式涉及到一个单一类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象方式,可以直接访问,不需要实例化该类的对象; 注意: 1.单例类只能有一个实例; 2.单例类必须自己...原创 2020-04-17 20:25:15 · 342 阅读 · 0 评论 -
设计模式学习笔记 --- 2.抽象工厂模式
相对于简单工厂模式来说,抽象工厂模式针对于多中对象多个工厂,但是原理都是工厂模式,操作类似; 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂的其他工厂。该超级工厂又称为其他工厂。这种类型的设计模式属于创建模型模式,它提供了一种创建对象的最佳方式; 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显示指定它们的类,每个生成的工厂都...原创 2020-04-17 17:22:38 · 333 阅读 · 0 评论 -
设计模式学习笔记 --- 1.简单工厂模式
这个设计模式更像是一种选择器,大家都用过只是概念比较模糊; 这种类型的设计模式属于创建模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象时,不会对客户端暴漏创建逻辑,并且是通过共同的接口来指向新创建的对象; 意图:定义一个创建对象的接口,让其子类自己决定哪一个工厂类,工厂模式使用其创建过程延迟到子类进行; 主要解决:主要解决接口选择的问题; ...原创 2020-04-17 15:39:29 · 479 阅读 · 0 评论 -
Java学习笔记 --- 理解字符串池
Java学习笔记 --- 理解字符串池原创 2016-12-11 15:11:46 · 387 阅读 · 0 评论 -
Java学习笔记 --- 异常处理 throws 和 throw区别与联系
Java学习笔记 --- 异常处理 throws 和 throw区别与联系原创 2014-10-27 15:09:12 · 905 阅读 · 0 评论 -
Java学习笔记 --- Collection集合框架
Java学习笔记 --- Collection集合框架原创 2016-12-11 16:05:49 · 562 阅读 · 0 评论 -
Java学习笔记 --- IO理解总结
Java学习笔记 --- IO理解总结原创 2016-12-11 16:45:21 · 658 阅读 · 0 评论 -
Java学习笔记 --- 抽象类和接口的区别与联系
Java学习笔记 --- 抽象类和接口的区别与联系原创 2016-12-07 10:13:16 · 515 阅读 · 0 评论 -
Python学习笔记 --- Pycharm中遇到 no data sources are configured to run thi s sql...
Python学习笔记 --- Pycharm中遇到 no data sources are configured to run thi s sql...原创 2017-01-04 13:59:29 · 12286 阅读 · 1 评论 -
C++学习笔记 --- 指针练习
C++学习笔记 --- 指针练习原创 2014-03-24 19:50:38 · 937 阅读 · 0 评论 -
C++学习笔记 --- 字符串和字符数组
C++学习笔记 --- 字符串和字符数组原创 2014-03-24 20:42:29 · 926 阅读 · 0 评论 -
C++学习笔记 --- 析构函数
C++学习笔记 --- 析构函数原创 2014-03-25 11:16:32 · 970 阅读 · 0 评论 -
C++学习笔记 --- STL中的deque容器
C++学习笔记 --- STL中的deque容器原创 2014-04-27 09:46:25 · 849 阅读 · 0 评论 -
Python学习笔记 --- 利用STMP协议发送邮件
Python学习笔记 --- 利用STMP协议发送邮件原创 2017-01-14 12:07:30 · 872 阅读 · 0 评论 -
Python学习笔记 --- 异常处理心得
Python学习笔记 --- 异常处理心得原创 2017-02-28 20:00:45 · 938 阅读 · 0 评论 -
Scala学习笔记 --- 理解术语面向对象编程和函数式编程
Scala学习笔记 --- 理解术语面向对象编程和函数式编程原创 2017-02-19 23:01:54 · 636 阅读 · 0 评论 -
Python学习笔记 --- 3.7版本之前的dict中的keys(), values() 取出来的值为什么是无序的?
Python学习笔记 --- dict中的keys(), values() 取出来的值为什么是无序的?原创 2017-02-20 19:00:26 · 5477 阅读 · 2 评论 -
Python学习笔记 --- pandas将excel转化为csv文件
Python学习笔记 --- pandas将excel转化为csv文件原创 2017-02-21 15:08:24 · 8290 阅读 · 1 评论 -
Spark学习笔记 --- Spark中宽依赖(Wide deps)与窄依赖(Narrow deps)
Spark学习笔记 --- 宽依赖(Wide deps)与窄依赖(Narrow deps)原创 2017-03-08 19:38:42 · 1066 阅读 · 0 评论 -
Spark学习笔记 --- Spark中Map和FlatMap转换的区别
Spark学习笔记 --- Map和FlatMap转换的区别原创 2017-03-08 19:25:32 · 1572 阅读 · 0 评论