记忆口诀
工厂 抽风 ,单独 建造 原型
桥代理组合适配器,享元(拿回家)装饰外观
多次命令、责备中,车模见状,方解释(原因)
在软件开发中这23种设计模式可以提高代码的可复用性、灵活性、可扩展性等方面的特性,帮助开发人员更快地构建出高质量的软件系统。
那么你知道我们是根据什么对这些设计模式进行分类的吗?
创建型 5种(创建型模式关注对象的创建,将创建对象的过程进行抽象和封装,作为客户端需要使用对象,不用关心对象的创建过程)
工厂模式
单例模式
抽象工厂模式
原型模式
建造者模式
结构型 7种(结构型模式关注类和对象的组合)
桥接模式
代理模式
外观模式
享元模式
装饰器模式
组合模式
适配器模式
行为型 11种(行为i型模式不仅仅描述对象或类的模式,还描述它们之间的通信模式)
备忘录模式
解释器模式
命令模式
中介者模式
观察者模式
策略模式
状态模式
模板方法模式
访问者模式
迭代器模式
责任链模式
这样看起来太枯燥了,怎么去理解才能更好的记住呢?
从迭代器开始,我们将类中数据结构的遍历和类的功能实现分离出来,本质上使用了工厂模式;
其次我们学习了适配器模式,它将不同的接口进行适配,从而便于版本的兼容性以及其他功能;
然后我们学习了模板方法,使用模板面向抽象编程,便于新的子类的实现和管理;
之后学习了工厂模式,其实借用了模板模式来创建产品,是一种非常重要用处很广的一种方法;
然后我们学习了单例模式,有懒汉式、饿汉式等,生成关于某个类全局唯一的对象,注意多线程的影响;
之后是原型模式,用来复制复杂的对象,使用了clone方法,然后是builder模式,用一个新的类对已有的抽象接口进行整合和编程,从而构建出我们想要的东西;
然后是抽象工厂模式,使用了工厂模式,组合模式等模式,面向抽象编程,将抽象零件组装成抽象产品,便于具体工厂的创建,提高了代码的组件化和复用性;
然后是桥接模式,将类的功能层次和实现层次分割开来,便于对应的扩展和使用;
然后是策略模式,可以整体的替换策略,使用也很广泛;然后是组合模式,保证了同根同源,通过委托添加自己构成递归,树形结构,将具有树形特点的对象组合起来;
然后是装饰器模式,和组合模式的结构类似,同样是递归结构,从而可以不断的装饰,增加新的功能,很好用;
接着是visitor访问者模式,通过在类外访问类中的数据结构从而得到想要的结果,便于程序的可扩展性和组件化;
接着是责任链模式,推卸责任,根据问题的大小来考虑自己释放处理,本质是链表,便于职责分明;
然后是外观模式,通过整合各个类之间的调用关系,组建成了统一的接口(API),便于外部类的调用;
接着是仲裁者模式,将很多类之间互相关联的关系交给仲裁者处理,省去了各个类之间的嵌套和调动,有利于高内聚和低耦合,思路清晰,便于扩展;
然后是观察者模式,通过互相委托从而能够在被观察的类发生改变的时候得到相应的改变的信息并且处理;
然后是备忘录模式,通过在某一时刻的状态保存下来,便于恢复,在游戏中使用的比较多;
然后是状态模式,将状态当做类,从而职责分明,解除了很多繁琐的if和else这些分支逻辑,便于扩展;
然后是享元模式,轻量级对象,通过共用不变对象来实现;
然后是代理模式,懒加载真正的服务器,加快访问速度,代理是帮助服务器代理的;
然后是命令模式,将命令当做类,通过保存一些列命令,从而能够随时执行这些命令,需要清除命令的本质就是一些操作和数据;
最后是解释器模式,利用编程原理的方法,来更高层次的封装代码,将自己开发的java代码当做编译系统,从而不用改变java代码只修改更高语言层次的代码就能实现不同的功能。
设计模式的七大原则
1.单一职责原则
2.接口隔离原则
3.依赖倒转原则
4.里式代换原则
5.开闭原则
6.迪米特原则
7.合成复用原则