设计模式
狗的屎壳郎
菜鸡
展开
-
组合-模式
处理树形结构,叶子节点和子树。如操作系统的文件 看作(叶子节点)/文件夹看作(子树);软件系统的菜单结构也是树形,具体选项看作(叶子节点)/二级菜单看作(子树)。组合模式就是要为叶子节点和子树抽象出统一的接口,叶子节点进行具体操作,子树进行递归处理。以文件系统为例。我要给某个路径下的所有文件进行杀毒。为文件和文件夹抽象出一个公共抽象类AbstractFileinterface AbstractFile{ public void add(AbstractFile abstractFile);原创 2021-12-27 21:45:52 · 193 阅读 · 0 评论 -
桥接-模式
将抽象部分与实现部分解耦。比如蜡笔的颜色和型号,3种型号的蜡笔(大,中,小),4种颜色(红,黄,蓝,绿)。需要准备12只蜡笔。而反观毛笔,只需要准备3只再加上4盘颜料,7件。这就是将颜色和型号解耦。之后添加毛笔或者颜色都要比蜡笔来的好。通过颜料盒来当作颜色和毛笔之间的桥梁。...原创 2021-12-26 01:19:44 · 128 阅读 · 0 评论 -
适配器模式
适配适配,说到底就是将老旧代码的功能组合成一个新类。比如我以前有排序类进行排序,有二分查找类进行二分查找,代码太复杂了,我找不到我也不敢随随便便改代码。现在有一个新需求,需要将学生的成绩进行排序或查找排名将需求抽象interface Score{ int [] sort(int arr[]); int binarySearch(int arr[],int score);}排序老代码class Sort{ int [] sort(int arr[]){实现............原创 2021-12-25 21:22:14 · 559 阅读 · 0 评论 -
六大单例模式
单例模式,只能出现一个该类的实例对象。所以需要把构造方法访问类型改成private私有的。饿汉式通过static生产唯一的一个类变量成员public class Main { private static Main instance=new Main(); private Main(){} public static Main getInstance(){return instance;}}老板是个极其小气的人,走过来说,我都还没用这个类,你类加载就直接把instatn原创 2021-12-25 20:16:23 · 272 阅读 · 0 评论 -
原型模式(克隆模式)
对象A指向的是它的内存地址,当我们把对象A赋值给对象B,他俩还是指向的同一处地址,修改A的话,B也跟着变了。(基本数据类型则是直接赋值,String类型虽然是引用类型,但它被final修饰不可改变的,所以你修改它时其实修改的是string的另一个新的指向引用,所以String自带深克隆)对象的重默认clone()方法会调用super.clone(),其实是浅拷贝。School学校类,给User充当引用类型变量public class School { private String name;原创 2021-12-25 17:51:10 · 169 阅读 · 0 评论 -
建造者模式
当一个类的成员熟悉过于复杂,庞大时,考虑用建造者模式来设计类。如果你在源码中看到一堆方法通过“·”连接,最后调用build()方法,那他就是在用建造者模式构建一个对象了。直接上源码。Mybatis解析配置文件之解析mapper.xml文件,将它解析成一个MapperStatement对象供后续使用看一下这个MapperStatement类public final class MappedStatement { private String resource; private Configur原创 2021-12-25 16:42:51 · 301 阅读 · 0 评论 -
抽象工厂模式
工厂方法模式是生产一类产品,如果要再生成另一类产品PC,应该怎么表示呢?其实只要在工厂方法上修改就行了工厂方法模式抽象工厂模式从类图中可以看出,他俩并没有什么区别,就是在工厂里多了一类产品的映射罢了,完全可以把他俩看成是同一个模式,没必要分这么清楚,知道核心就可以了。总结当我们设计用于生产产品的类时,考虑抽象工厂模式,对应的工厂生产对应的产品,这样有利于工厂的扩展,产品的扩展。切记不要陷入我举例子的代码或文字里了。搞懂核心理念就可以了。...原创 2021-12-25 15:37:37 · 143 阅读 · 0 评论 -
工厂方法模式
很明显简单工厂模式违法了开闭原则,当我要新增一个产品只能修改老代码里面的if语句了。和简单工厂模式相比,工厂方法模式其实就是将那个代工厂的一堆if判断去掉了,生产具体产品的任务给了各自的工厂,不是由代工厂的if,else判断来生产了,现在我们的目的变成了修改一堆if的代工厂,引入工厂模式AbstractFactory类:生产不同产品的工厂的抽象类public interface AbstractFactory { Phone makePhone();}XiaoMiFactory类:生产原创 2021-12-25 15:13:06 · 152 阅读 · 0 评论 -
简单工厂模式
还是那句话,千万千万不要陷入设计模式 这四个字眼里去了,比如这个简单工厂模式,前人只不过是给它取了一个高大上的名字而已,任何人都写过简单工厂模式。class Factory{ public Product getProduct(String name){ if(name.equals("apple")) return Apple(); else if(name.equals("banana")) return Bana原创 2021-12-24 21:05:44 · 178 阅读 · 0 评论 -
设计模式设计原则
了解设计模式设计原则原创 2021-12-24 20:56:27 · 173 阅读 · 0 评论