首页 > 编程知识 正文

你所知道的设计模式有哪些种类,几种常见的设计模式

时间:2023-05-06 12:21:12 阅读:240191 作者:2046

Java 中一般认为有 23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

1..单例设计模式
最好理解的一种设计模式,分为yhy式和饿汉式。
1.1 饿汉式

public class SingletonEH { /** *是否 Lazy 初始化:否 *是否多线程安全:是 *实现难度:易 *描述:这种方式比较常用,但容易产生垃圾对象。 *优点:没有加锁,执行效率会提高。 *缺点:类加载时就初始化,浪费内存。 *它基于 classloder 机制避免了多线程的同步问题, * 不过,instance 在类装载时就实例化,虽然导致类装载的原因有很多种, * 在单例模式中大多数都是调用 getInstance 方法, * 但是也不能确定有其他的方式(或者其他的静态方法)导致类装载, * 这时候初始化 instance 显然没有达到 lazy loading 的效果。 */ private static SingletonEH instance = new SingletonEH(); private SingletonEH (){ } public static SingletonEH getInstance() { System.out.println("instance:"+instance); System.out.println("加载饿汉式...."); return instance; }}

1.2yhy式

public class SingletonLHsyn { /** *是否 Lazy 初始化:是 *是否多线程安全:是 *实现难度:易 *描述:这种方式具备很好的 lazy loading,能够在多线程中很好的工作,但是,效率很低,99% 情况下不需要同步。 *优点:第一次调用才初始化,避免内存浪费。 *缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。 *getInstance() 的性能对应用程序不是很关键(该方法使用不太频繁)。 */ private static SingletonLHsyn instance; private SingletonLHsyn (){} public static synchronized SingletonLHsyn getInstance() { if (instance == null) { instance = new SingletonLHsyn(); } return instance; }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。