设计模式
哟哟之名
这个作者很懒,什么都没留下…
展开
-
设计模式:装饰器模式
一、解决什么问题? 在不想增加很多子类的前提下拓展类 二、菜鸟教程案例 三、思考 看完这个案例,我感觉自己好迷惘。。。 自己目前能理解到的层次是:为了能让类结构较为清晰,Shape接口的子类有其自己的作用,而抽象类ShapeDecorator是作为Shape类的拓展,能破坏里氏替换原则,从而进行自由度更高的拓展。 ...原创 2021-05-30 23:17:20 · 65 阅读 · 0 评论 -
设计模式:组合模式
一、解决什么问题? 组合模式使得用户对单个对象和组合对象的使用具有一致性。 二、菜鸟教程案例原创 2021-05-28 23:38:47 · 72 阅读 · 0 评论 -
设计模式:过滤器模式
一、解决什么问题? 使用不同的标准来过滤一组对象。 二、菜鸟教程案例 定义一个过滤器接口Criteria,它规定一个方法meetCriteria,接收的形参为List,返回的结果也为List 编写Criteria的实现类,性别、单身、And、Or的过滤器 传入PersonList,得出自己想要的结果集List 三、思考 这个模式非常的浅显易懂。 ...原创 2021-05-27 21:41:47 · 83 阅读 · 0 评论 -
设计模式:桥接模式
一、解决什么问题? 把抽象化与实现化解耦,使得二者可以独立变化。 二、菜鸟教程案例 说真的,看到这个图,我有点茫然。这不就是Shape类将DrawAPI接口给组合进来了吗??? 确实,Shape的变化与DrawAPI的变化,互相没有影响。 三、思考 设计模式的学习,目前体会均不深刻,需要大量的实战才能体会深刻。 ...原创 2021-05-26 23:22:00 · 79 阅读 · 0 评论 -
设计模式:适配器模式
一、解决什么问题? 系统需要使用现有的类,而这个类的接口无法满足系统的需要。 二、菜鸟教程案例 MediaPlayer接口、AudioPlayer类都是原本已存在的;但是AudioPlayer只能播放mp3格式的视频。 现在的需求是,利用现有的AudioPlayer播放 mp4、vlc 格式的视频! 关键步骤就是新增一个适配器类MediaAdapter,它实现了与AudioPlayer相同的接口,它自己聚合了AdvancedMediaPlayer这个接口(这个接口支持mp4与vlc格式的播放功能)原创 2021-05-25 23:29:50 · 89 阅读 · 0 评论 -
设计模式:原型模式
一、解决什么问题? 用于创建重复的对象,同时又能保证性能。 二、如何使用? 首先定义一个User类,它必须实现了Cloneable接口,重写了clone()方法。 public class User implements Cloneable { private String name; private int age; @Override protected Object clone() throws CloneNotSupportedException {原创 2021-05-24 23:22:49 · 314 阅读 · 7 评论 -
设计模式:建造者模式
一、前言 本文仅作为个人笔记用,建议大家自行前往菜鸟教程学习。今天在菜鸟教程查看了建造者模式的代码,虽然类结构看起来非常清晰,但总是觉得get不到它的精妙之处,又或者说不知道它到底能解决什么样的问题。今天先做个笔记在这里,以后有了更深的体会再做修改。 二、类图关系 三、类图解释 该图以麦当劳快餐店的套餐作为案例。 Meal 代表套餐的种类,不同种类的套餐会有不同的元素搭配。例如鸡腿堡+可乐是肉类套餐;蔬菜堡+百事是素食套餐; Item是商品的公共接口,定义了三个核心方法。商品名称、价格、包装 Packi原创 2021-05-22 22:52:14 · 94 阅读 · 0 评论 -
UML类图总结
一、类之间的关系 1、依赖关系dependency:(------------>) A类引用B类 A类中的方法args、方法returnType是B类 A类中的成员变量有B类 A类的某个方法中,局部变量有B类 2、泛化(继承)generalization:(───▷) 它是依赖关系的特例 3、实现implementation:(----------------▷) 它是依赖关系的特例 4、关联association:(→ or ─) 它是依赖关系的特例 具有导航性,例如:A有B,B无A原创 2020-11-21 23:41:28 · 191 阅读 · 0 评论