
经典设计模式实战演练
透彻理解设计模式,写出令人赏心悦目的代码
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
君君要上天
每天学习一点点,每天提升一点点。
展开
-
导读:如何学好设计模式
什么是设计模式 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。上面的解释来自于某度某科,是比较标准的定义,可以从中筛选出几个关键字来帮助我们理解什么是设计模式:最佳实践解决方案试验和错误总...原创 2020-09-22 12:16:24 · 570 阅读 · 0 评论 -
第01课:策略模式
策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。一般情况下我们是将一种行为写成一个类方法,比如计算器类中有加、减、乘、除四种方法,而策略模式则是将每一种算法都写成一个类,然后动态的选择使用哪一个算法。这里所说的算法并不是指“冒泡排序算法”、“搜索算法”之类的算法,它可以是一段代码、一个请求、一个业务操作。策略模式:从上图可以看到...原创 2020-09-22 12:16:22 · 363 阅读 · 0 评论 -
第02课:装饰器模式
装饰器模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。某一天隔壁老王赤果果地来到百货商店,打算给自己买一套装备,武装到牙齿。他买了衣服裤子和帽子,于是老王这样做:public class LaoWang { public void show(){ System.out.println("我穿上衣服,累计花费100元"); ...原创 2020-09-22 12:16:21 · 378 阅读 · 0 评论 -
第03课:观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。发布—订阅在首篇导读中介绍了设计模式的分类,而观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。观察者模式有一个别名叫“订阅—发布模式”。报纸大家都订过吧,当你订阅了一份报纸,每天都会有一份最新的报纸送到你手上,有多少人订阅报...原创 2020-09-22 12:16:19 · 331 阅读 · 0 评论 -
第04课:适配器模式
适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间下面讲一件真事:本人去年年底公司年会抽奖抽中了一台粪叉(iphone x),由于没有现货,大概过了一个月左右,抽中的粪叉才送到我手中。拿到手一看,咦,是港版的。略微有些失望,因为港版的比较便宜。不过这台粪叉打算留给女友使用,不打算卖,港版就港版吧。第二天,打算给粪叉充电的时候突然发现充电头是这样...原创 2020-09-22 12:16:18 · 465 阅读 · 0 评论 -
第05课:单例模式与工厂模式
单例模式和工厂模式是平时开发中最常见的两种设计模式,即便没有系统学习过设计模式的开发者,也必然对此不陌生。这两种设计模式是我认为最容易理解,最简单的设计模式,因此放在同一篇文章中。单例模式概述 单例模式确保一个类只有一个实例,并提供一个全局访问点我们常常希望某个对象实例只有一个,不想要频繁的创建和销毁对象,浪费系统资源,最常见的就是IO,数据库的连接,redis连接等对象,完全没有必...原创 2020-09-22 12:16:16 · 290 阅读 · 0 评论 -
第06课:模板方法模式
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。不知道在场有没有喜欢烹饪的小伙伴,做一道西红柿炒蛋我们通常需要以下步骤:打开抽油烟机生火西红柿炒蛋关火关闭抽油烟机用代码来表示:public class CookXihongshi { public void open(...原创 2020-09-22 12:16:15 · 300 阅读 · 0 评论 -
第07课:外观模式
概述 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。飞机驾驶舱不少人都见过,当看到那些密密麻麻的按钮时,心想要是能一键启动就好了。在代码的世界里,我们也常常遇到一个业务功能需要调用很多接口甚至很多系统的情况,就像下图:有时候被我们调用模块之间还需要互相调用,模块之间的关系都可以画出一张蜘蛛网。在这种情况下,要求开发者需要对每一个...原创 2020-09-22 12:16:13 · 260 阅读 · 0 评论 -
第08课:代理模式
概述 代理模式为另一个对象提供一个替身或者占位符以控制对这个对象的访问举一个生活中的例子:有时候我们想要买火车票,但是火车站太远,那么我们可以去附近的火车票代售点进行购买。此时,代售点就是代理,它拥有被代理对象的部分功能——售票功能。为什么需要代理?在生活中,我们去售票代理处买票是因为火车站太远了,但在代码的世界里可没有“太远”了这种说法。使用代理的基本目的是控制对真实对象的访问。这...原创 2020-09-22 12:16:12 · 311 阅读 · 0 评论 -
第09课:责任链模式
概述 责任链模式为某个请求创建一个对象链,每个对象依次检查此请求,并对其进行处理,或者将它传给链中的下一个对象链表是很常见一种数据结构,链表中的每一个节点都是一个对象,并且该对象中存储着下一个节点的指针。链表的基本结构如下:责任链模式的结构其实和链表相差无几,唯一的区别就是责任链模式中所有的对象都有一个共同的父类(或接口):在责任链模式中,N个 Handler 子类都处理同一个请...原创 2020-09-22 12:16:10 · 284 阅读 · 0 评论 -
第10课:设计模式综合应用
设计模式总结我们先来回顾一下前面课程的内容:设计模式分类分类关注点创建型模式关注于对象的创建,同时隐藏创建逻辑结构型关注类和对象之间的组合行为型关注对象之间的通信设计模式定义策略模式(行为型模式)策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户装饰器模式(结构型模式)装饰器模式动态地将责任附...原创 2020-09-22 12:16:08 · 730 阅读 · 0 评论