java常见的六种设计模式-入门

在这里不得不提的就是框架与设计模式的区别.

简单的说(又简单的说,你都不会复杂点?):一栋高楼,钢筋混泥土组成的架构就是框架,而室内装修摆放的针对性的解决方案就是设计模式(墙角线路要用单例模式,天花板的灯具摆放要用适配器模式,餐桌摆放要用工厂模式).

1) 单例模式。

单例模式对实例个数的控制并节约系统资源.

在它的核心结构中只包含一个被称为单例类的特殊类,通过构造函数私有化和静态块以及提供对外访问的接口来实现.

饿汉模式:单例实例在类的加载中就被创建.不需要判断,安全.

private static MySingleton2 mySingleton = new MySingleton2();     饿汉式   直接创建了对象

懒汉模式:单例实例在第一次使用时被创建.需要if判断,不安全.

private static MySingleton2 mySingleton=null                      懒汉式    静态块中会进行判断

登记模式(不常用可忽略).

应用场景:如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

2) 工厂模式。

工厂模式主要是为创建对象提供了接口。

应用场景如下:

a、 在编码时不能预见需要创建哪种类的实例。

b、 系统不应依赖于产品类实例如何被创建、组合和表达的细节

3) 观察者模式。(一个学生对应多个老师,一个老师对应多个学生).

定义了对象间一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

应用场景如下:

a、对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。

b、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。

4) 迭代器模式。

迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

应用场景如下:

当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑用迭代器模式。其实stl容器就是很好的迭代器模式的例子。

5) 代理模式

为其他对象提供代理来控制对该对象的访问.

应用场景如下:

ngnix的反向代理(隐藏服务器)运用的就是代理模式.

6)适配器模式

将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。

应用场景如下:

别人开发的控件要用咱们的应用服务(不识别啊),这时候适配器模式起作用了.让不兼容变为兼容.


有不对的请多多指点,谢谢各位大佬.



你可能感兴趣的:(java常见的六种设计模式-入门)