• 设计模式复习


    设计模式
    含义
    是前辈们对代码开发经验的总结,是解决特定问题的一系列方案(针对面向对象)。
    分类(共23种)
    创建型模式
    定义
    描述怎么创建对象,让创建和使用分离,让代码更好的维护和扩展。
    包含
    5种:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式。
    结构型模式
    定义
    从程序的结构上实现松耦合,使得类或者对象可以按某种布局组成更大的结构,解决复杂的问题
    包含
    7种:适配器模式,桥接模式,装饰模式,组合模式、外观模式,享元模式,代理模式
    行为型模式
    定义
    让类或对象之间更好的相互协作
    包含
    11种:模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,职责链模式,访问者模式。
    面向对象七大原则(oop)
    开闭原则:对扩展开放,对修改关闭
    单一职责原则:如引起类改变只有一个原因
    接口隔离原则:要为各个类建立它们需要的专用接口
    里氏替换原则:确保父类性质在子类中仍然成立
    依赖倒置原则:要面向接口编程,不要面向实现编程。
    合成复用原则:先考虑通过接口来实现(有没有),其次才考虑使用继承关系来实现(是不是)
    迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话。(朋友指的是成员变量或方法输入输出的对象)
    创建型模式例子
    单例模式
    定义
    通过私有构造函数,确保一个类只有一个实例存在。
    表现形式
    饿汉式单例
    类加载时就创建对象,如果不使用就造成资源浪费。(线程安全)

    			懒汉式单例
    				使用时再创建对象(线程不安全,如多个线程同时创建对象)
    				DCL懒汉式(双重检测锁模式的懒汉式单例)
    					
    					双重检查锁DCL作用:尽可能减少加锁的范围(锁如果加在第一重,初始化除了创建对象可能还涉及其他赋值操作,所以加锁范围太大。在初始化中创建 对象为什么还要二重检查?因为第一重检查未加锁,所以可能导致多个线程都判断对象为空,从而进入初始化方法,依次创建多个对象)
    			静态内部类单例(将实例放在静态内部类中,比较少用)
    				
    		反射可以破解单例(反射不能破解枚举单例,底层会进行判断)
    	工厂模式
    		定义
    			实现了创建者和调用者分离。让代码更好的维护和扩展
    		分类
    			简单工厂模式
    				工厂类通过不同参数创建不同对象(两个产品都继承抽象产品类,产品工厂通过参数返回不同产品)
    				举例:多个具体型号车继承一个抽象的车类,创建一个车工厂,根据参数创建具体型号的车然后返回。(缺点就是没有满足开闭原则,比如新增一类车时,需要在车工厂里新增代码。解决方法就是通过工厂方法模式)
    				模板
    			工厂方法模式
    				相对于简单工厂,为了满足开闭原则。
    				例子:先创建一个抽象工厂类,再给每个类型的车都创建一个工厂类(实现了了抽象工厂类),然后就可以通过抽象工厂类创建一个具体类别的工厂,再通过具体工厂创建对应类别的车,新增一个车品牌的时候之间创建一个新的工厂即可。但是工厂方法模式会新增很多类,在编程和结构复杂度上太复杂,所以一般还是优先选择简单工厂模式。
    				模板
    			抽象工厂模式
    				创建一个工厂的工厂。适用于涉及产品族的时候。缺点:不满足开闭原则,就是增加功能会修改代码。所以一般用于功能固定的产品族。
    				例子:比如小米和华为时两个产品族,都可以创建手机或者电脑。这时我们可以创建一个工厂的工厂,可以通过它创建华为工厂和小米工厂,小米工厂和华为工厂又可以创建手机和路由器
    				模板
    结构型模式
    	适配器模式
    		通过引入适配器将原本接口不兼容的类能一起工作。(一般采用对象适配器,不采用类适配器,对象适配器可以通过多态实现多种类型的适配)
    		例子:如电脑上只有usb接口,插不上网线接口,通过引入一个转接器(适配器)将电脑接上网线。
    	桥接模式
    		适用于多维度的场景,将每个维度分离,使它们都可以独立的变化,再通过桥接把不同维度组装成起来。
    		例子:比如品牌和电脑的组合,新增一个品牌时,电脑和品牌的组合就会多很多,所以把品牌和电脑分离。通过桥接的方法把它们再组合起来(在电脑中通过一个品牌的成员变量,创建电脑时,传入具体品牌)
    	代理模式
    		访问某个对象时,是通过代理对象间接访问
    		Spring中的AOP
    行为型模式
    	策略模式
    		定义一组算法,将每个算法都封装起来, 它们都实现同一个策略抽象类,同过这个策略可以自由切换不同的算法。
    		例子:比如洗衣机有快洗,大物洗,这就是两个算法,通过定义一个洗衣算法的接口,快洗,大物洗实现这个洗衣算法接口。用户在洗衣的时候,只需要选择一个算法传入洗衣这个方法中即可。
    Spring中用到的设计模式
    	简单工厂模式:BeanFactory
    	代理模式:AOP
    	策略模式:自动装配
    	观察者模式:事件监听机制
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 相关阅读:
    项目介绍:“WeTalk”网页聊天室
    eggjs controller层调用controller层解决方案
    比特币市场熊市中遭受重大打击的前5大加密货币
    快递批量查询高手软件:一键批量分析已揽收单号
    外卖霸王餐系统 支持小程序,分站合作
    JS前端实现身份证号码合法性校验(校验码校验)
    北美干旱监测 (NADM)数据集
    FPGA实现“乒乓操作”
    Java中Math.ceil()方法具有什么功能呢?
    95后大厂程序员删库被判刑,只因项目被接手对领导心生不满
  • 原文地址:https://blog.csdn.net/Y734493585/article/details/126550967