设计模式笔记01

策略模式

概况:将类中易变化的部分分离出为一个新类(分离责任),组合新分离的类,使的变化独立于本类,并可替换变化(实现易复写)。

知识点

1:将责任(或变化)分离(封装)

2:针对接口编程,而非具体实现。(Job a1 = new 法师(√)法师 a2=new 法师(×),a1可变灵活,a )

3:善用组合和继承/(多用组合,少用继承)

 

 

 

 

 

 

 

 

观察者模式

概述:定义一个一对多的依赖,当一个对象发生改变多个对象会受到通知。

1:为交互对象之间的松耦合设计而努力(针对接口编程)

 

*Observable应该是消息的分发者而不一定是生产者

 

 

 

 

 

 

 

 

装饰者模式

概述:在不修改代码的情况下,动态赋予类新责任(组合),并保持类不变(继承)

1:类应该对扩展开发,对修改关闭。(组合)(按上图,若亚索要改变自己的speed,对扩展开发:动态增加改变speed代码(被buff装饰);对修改开发:在原类上增加定向修改speed代码)

 

 

 

 

工厂模式

所有工厂都是用于封装对象的创建。

*:要依赖抽象而非具体类

简单工厂:简易封装一组对象创建,实现了1级抽象

工厂模式:利用继承父类抽象方法,由子类决定具体工厂,实现了2级抽象

抽象工厂模式:利用组合,提供一个同时可以创建多个不同对象(依赖对象家庭)的接口

//工厂模式抽象 1:ps. 2:createPizza
PizzaStore ps = new NewYorkPizzaStore();
Duck duck = ps.createPizza(PizzaA);

 

 

单例模式

概述:一个类只有一个实例,与一个全局访问点

方法:静态方法static createIns + 静态创建钩子(防止多次实例化)static boolean existIns+ 私有构造函数 private XXX ( + 预防多线程破坏 ) 

预防多线程波坏:1:同步 2:立即实例化(类全局变量) 3:二级钩子,内钩才要求同步

适应情景例:线程池,注册表,缓存,驱动程序......(黑人?)

 

 

 

 

命令模式

概述:将函数封装成对象,以便1:规范化执行execute() 2:记录一些数据

适应情景例:撤销操作,任务队列,日志请求

撤销:每个具体Command实现undo,undo可根据一个保存变量决定

工作队列:因为execute()是接口协议,工作队列xxCommone.execute(),可抽象依次执行

日志请求:每次execute(),save()一个状态到服务器,并能load()

 

 

 

 

适配器模式和外观模式

*:最少知原则:尽量和你的密友谈话

适配器定义:将一个类的接口变成期望的类的接口

真实世界的适配器:Iterator(新) --> EnumAdapter(创建) ——>Enum (旧)

 

外观模式定义:组合多类提供简化接口

 

 

 

模板方法

*:别来调用我,我(高级)来调用你(低级)

概况:父类定义算法骨架(结构),采用继承,具体细节使用抽象函数交给子类决定(工厂模式是模板方法的特殊情况)

(心得:找到程序不变的地方,也就找到易变的地方,分别封装,再统一抽象接口)

钩子:一种声明再抽象类的方法,但只有空或默认的实现。子类可使用钩子控制或改变父类的一些结构流程。但却使得子类(低)并没有调用父类(高)。

自然中的模板方法和变形:sort中的compareTo();

 

 

 

springboot003基于Springboot+Vue的图书个性化推荐系统的设计与实现毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值