设计模式花园
设计模式花园,通过最常用的实例帮助您快速学习和实践简单但功能强大的23种设计模式。
等风散
这个作者很懒,什么都没留下…
展开
-
设计模式花园(二十)-迭代器模式
迭代器模式是顺序访问对象的各个元素,而又不用暴露对象的内部表示。我们创建一个宠物仓库类,然后对其内部的各个宠物进行遍历。原创 2022-10-04 17:16:21 · 143 阅读 · 0 评论 -
设计模式花园(十九)-桥接模式
圣诞节到了,我们设计一个礼物对象,但是礼物可分为大礼物和小礼物(M类),礼物的种类又可分为玩具、花等(N类);如果用继承,可能产生MxN种,故这里我们创造一个Gift抽象类和GiftImpl抽象类,然后Gift抽象类实现大小礼物、GiftImpl抽象类实现花、玩具类,二者各自发展;桥接模式是结构型模式的一种。桥接模式将抽象部分(抽象类)和实现部分(类)分离,二者都可以独立的变化。具体做法是顶层两个抽象类,其中一个抽象类中聚合(构造函数传递)另一个抽象类的实现类,然后创建包含两种概念的对象。原创 2022-10-04 17:04:42 · 67 阅读 · 0 评论 -
设计模式花园(十八)-代理模式
代理模式是结构型模式的一种。代理模式是一个类代表另一个类的功能(继承也可以实现类似的功能,这里通过耦合来代替继承,实现解耦的目的)。例如:买茅台并不一定要去茅台厂买,可以去各种经销店购买。我们创建一个狗,并创建两个狗的代理类,一个用来记录狗玩耍的时间,一个用来标记狗开始、结束玩耍的日志。原创 2022-10-04 16:28:14 · 91 阅读 · 0 评论 -
设计模式花园(十七)-责任链模式
责任链模式是行为型模式的一种。责任链模式是处理请求的模式,将多个处理器串成一条链,让请求在链上进行传递。例如:报销审批,在自己职责范围中的可以审批,然后扔给下一个审批者。我们生成一行字符串消息,然后创建多个处理器对字符串进行过滤,并根据自己需要决定在哪里结束处理。原创 2022-10-04 16:19:00 · 141 阅读 · 0 评论 -
设计模式花园(十六)-观察者模式
观察者模式是行为型模式的一种。观察者模式又叫事件处理模式/生产者消费者模式,一个对象的状态发生更改时,会通知所有依赖它的对象并自动更新。PS:钩子函数Hook、Callback、Listener、Observer本质上都是观察者模式。我们创建一个孩子类,然后创建多个观察者(狗、妈妈),当孩子醒(发生事件)的时候,会通知多个观察者做出不同的反应。原创 2022-10-04 16:04:19 · 120 阅读 · 0 评论 -
设计模式花园(十五)-状态模式
状态模式是行为型模式的一种。状态模式基于状态决定类的行为。具体做法是我们实现一个状态抽象类/接口,继承或实现的子类分别对应不同的状态,且子类中重写不同的方法。我们实现根据孩子的不同状态说不同话的功能。原创 2022-10-04 15:39:01 · 134 阅读 · 0 评论 -
设计模式花园(十四)-原型模式
原型模式又叫克隆模式,从当前对象克隆一个相同对象。例如:Java内部自带原型模式,Object.clone()。可用于深拷贝的Location类。实现可克隆的Garden类。原创 2022-10-04 15:31:28 · 69 阅读 · 0 评论 -
设计模式花园(四)-策略模式
策略模式是行为型模式的一种,定义多个策略类,策略继承同一个策略接口,Context类方法可以根据传入的策略对象,调用不同的策略对象方法(Context初始化时,传入策略对象,然后调用策略对象方法)。我们编写加和减策略,然后根据不同的策略对象,调用不同的策略对象方法。原创 2022-10-04 15:03:44 · 73 阅读 · 0 评论 -
设计模式花园(十三)-备忘录模式
备忘录模式是行为型模式的一种。保存一个对象当前状态,以便在适当的时候进行恢复。游戏类,负责将状态从控制面板中取出恢复到游戏。我们根据备忘录模式实现游戏中的存档和读档。控制面板类,负责将关卡状态保存。关卡类,代表当前状态的一个类。原创 2022-09-28 00:16:31 · 927 阅读 · 0 评论 -
设计模式花园(十二)-装饰器模式
装饰器模式是结构型模式的一种,它在不改变原类的情况下,添加新的功能(装饰)。具体做法是创建一个抽象类(装饰类)并传入原有的类,然后重写原有类方法。场景:1)扩展一个类的功能。我们在我们的小花园的基础上增加一个围墙。PS:为了扩展性,我们考虑小花园继承自花园接口,这样我们既可以在花园接口向下扩展一层,同时也可以通过装饰类这个抽象类,重写原有方法,再次进行扩展。围墙花园类,给花园类增加一个围墙。原创 2022-09-28 00:04:50 · 71 阅读 · 0 评论 -
设计模式花园(十一)-命令模式
命令模式是使类继承具备撤销功能的抽象类,从而具有撤销功能。我们实现一个1+1=2的字符串,同时能够撤销答案的功能。原创 2022-09-27 23:48:54 · 68 阅读 · 0 评论 -
设计模式花园(十)-适配器模式
适配器模式(包装器模式)是将类的接口转化为另一个类的接口。对象适配器是适配器类构造方法传入原类对象,然后实现目标接口的方法对父类进行改写。人类朋友适配器类,人类朋友适配器继承猫类并实现人类朋友接口。即具备人类朋友说人话的功能,又能够获取到父类猫发出声响的功能,并通过转化将猫的声响变为人类可以理解的人话。人类朋友适配器类,实现人类朋友接口,具备说人话的功能。我们构造一个人猫适配器,让猫具有说人话的功能,实现人类与喵星人的对话。人类的朋友的接口,具备说人话的功能。人类的朋友的接口,具备说人话的功能。原创 2022-09-27 23:37:01 · 102 阅读 · 0 评论 -
设计模式花园(九)-模版模式
模板模式是行为型模式的一种。它提供一个可作为模板的抽象类,具体做法是定义一个包含多个抽象方法和一个方法(作为模板方法)的抽象类,子类按需要实现抽象方法来完成模板方法。小明的妈妈做饭步骤都是同一个模版,先定义好一个模板,卖菜、洗菜、煮饭,然后通过子类中对这些步骤进行填充,来达到按需实现做菜整体过程的目的。原创 2022-09-19 13:19:26 · 73 阅读 · 0 评论 -
设计模式花园(八)-构建器模式
构建器模式是创建型模式的一种。它使用多个简单对象链式构造一个复杂对象,一般在类中增加一个builder静态类,类中实现各种设置属性的方法。常用于链式形式初始化一个参数很多的对象。在Design Garden中我们可以通过花园构建器链式调用方法一步步创建一个花园对象。原创 2022-09-19 13:12:39 · 170 阅读 · 0 评论 -
设计模式花园(七)-享元模式
享元模式是结构型模式的一种,提前创建好对象放入池子中,重复利用。例如:数据库连接池、JAVA中的string,如果有则返回,没有则创建一个字符串放入字符串缓存池中。DesignGarden里的孩子有一个玩具池,每次都会拿出一个好的玩具玩,若玩具池没有玩具则创建一个新玩具。原创 2022-09-14 22:29:32 · 164 阅读 · 0 评论 -
设计模式花园(六)-组合模式
组合模式是结构型模式的一种,创建一个包含自己对象组的类,构建一个树形的层次结构。Design Garden构建一个能够代表家庭关系的组合模式。原创 2022-09-14 13:38:43 · 105 阅读 · 0 评论 -
设计模式花园(五)-外观模式
为子系统(子类)提供一个统一的界面(初始化子类,并提供子类方法)。(外观模式类似工厂模式,不同点在于工厂模式提供一个子类对象,而外观模式提供多个子类对象方法组合的对象)Design Garden女主人需要一只猫和一只狗,提高花园温馨度,于是我们设计一个猫狗一起玩耍的美好画面。原创 2022-09-14 13:32:26 · 118 阅读 · 0 评论 -
设计模式花园(三)-工厂模式
创建一个接口和一系列实现该接口的实体类,然后创建一个工厂类,由传入类型判断实例化哪一个实体类。例如:1)日志记录器。选择哪种存储方式:硬盘、远程服务器等。2)数据库访问,选择哪类数据库进行链接。3)设计一个连接服务器的框架,选择哪种协议进行连接。Design Garden女主人需要一只猫和一只狗,提高花园温馨度,于是我们设计一个宠物工厂,根据女主人需要创造各类宠物。原创 2022-09-14 10:11:21 · 271 阅读 · 0 评论 -
设计模式花园(二)-单例模式
1)饿汉模式(最常用),类加载时实例化单例对象。解决了资源访问冲突问题、单例对象节约内存提高性能,适合频繁创建和销毁且创建时耗费很多资源的对象。2)枚举单例,JVM会保证枚举对象的唯一性,因此每一个枚举类型及其变量在JVM都是唯一的。3)静态内部类,利用JVM内部机制实现实例创建时的唯一、线程安全、延迟加载。原创 2022-09-13 23:59:09 · 139 阅读 · 0 评论 -
设计模式花园(一)-概览
设计模式花园,通过最常用的实例帮助您快速学习和实践简单但功能强大的23种设计模式。创建型模式是关于对象实例化的模式。结构型模式是关于类和对象组合的模式。行为型模式是关于多个类或对象通过协作共同完成一个任务的模式。原创 2022-09-13 23:33:34 · 193 阅读 · 0 评论