备注:本文引用技术大神的链接,我仅仅做了简化提取:https://blog.csdn.net/zhangerqing/article/details/8194653
一、java中设计模式的分类
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
———————————————— 补充begin
工厂模式: 1.工厂方法模式 2.抽象工厂模式
工厂方法模式: 1.静态工厂方法模式(简单工厂模式) 2.实例工厂方法模式(多个工厂方法模式)
总结:工厂模式分为三种
1.静态工厂方法模式/简单工厂模式 2.实例工厂方法模式/多个工厂方法模式 3.抽象工厂模式
其中创建型模式(工厂方法模式、抽象工厂模式、单例模式、原型模式),我们最常见。
其实还有两类:并发型模式和线程池模式。
———————————————— 补充end
二、设计模式的六大原则
1、开闭原则(Open Close Principle)
2、里氏代换原则(Liskov Substitution Principle)
3、依赖倒转原则(Dependence Inversion Principle)
4、接口隔离原则(Interface Segregation Principle)
5、迪米特法则(最少知道原则)(Demeter Principle)
6、合成复用原则(Composite Reuse Principle)
三、Java的23中设计模式
1、工厂方法模式(Factory Method pattern)
工厂方法模式分为二种:
1.1、静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。(静态工厂方法模式又称为普通工厂模式)
1.2、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。
1.3、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
2、抽象工厂模式(Abstract Factory pattern)
工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
3、单例模式(Singleton)
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:
1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。
4、原型模式(Prototype)
原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。
很简单,一个原型类,只需要实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA或者cloneB
5、建造者模式(Builder)
工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。
求补充:简单工厂模式,到底属于工厂模式的一种(这样就会跟:工厂方法模式、抽象工厂模式、简单工厂模式 并列)?
还是属于工厂方法模式里面的一种(这样就会跟静态工厂方法模式(简单工厂模式)、实例工厂方法模式 并列)?
求指点:欢迎下方评论,有奖励!!!
——————————————————————————————————————
…以下18种都省略…请参照原大神作者的文章,我的也属于转载,很抱歉,带来不便。
原文链接:https://blog.csdn.net/zhangerqing/article/details/8194653