码迷,mamicode.com
首页 > 编程语言 > 详细

Java设计模式:23种设计模式

时间:2019-05-11 17:50:06      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:详解   方法   复用   需要   通过   迪米特   职责   法则   col   

1. 软件设计模式概述

2. GoF 的 23 种设计模式的分类和功能

3. UML中的类图及类图之间的关系

4. 开闭原则——面向对象设计原则

5. 里氏替换原则——面向对象设计原则

6. 依赖倒置原则——面向对象设计原则

7. 单一职责原则——面向对象设计原则

8. 接口隔离原则——面向对象设计原则

9. 迪米特法则——面向对象设计原则

10. 合成复用原则——面向对象设计原则

11. 创建型模式的特点和分类

12. 单例模式(单例设计模式)详解

  (1)饿汉式

①声明静态私有类变量,且立即实例化,保证实例化一次

②私有构造,防止外部实例化(通过反射是可以实例化的,不考虑此种情况)

③提供public的getInstance()方法供外部获取单例实例

好处:线程安全;获取实例速度快 缺点:类加载即初始化实例,内存浪费

public class Singleton {

    private static final Singleton singleton = new Singleton();

 

    private Singleton() {

 

    }

 

    public static Singleton getInstance() {

        return singleton;

    }

}

(2)懒汉式

延迟加载。

优点:在获取实例的方法中,进行实例的初始化,节省系统资源

缺点:①如果获取实例时,初始化工作较多,加载速度会变慢,影响系统系能

②每次获取实例都要进行非空检查,系统开销大

③非线程安全,当多个线程同时访问getInstance()时,可能会产生多个实例

public class Singleton {

private static Singleton singleton = null;

 

private Singleton() {

 

}

 

public static Singleton getInstance() {

if (singleton == null) {

singleton = new Singleton();

}

return singleton;

}

}

线程安全

1)同步锁

优点:线程安全,缺点:每次获取实例都要加锁,耗费资源,其实只要实例已经生成,以后获取就不需要再锁了

public synchronized static Singleton getInstance() {

if (singleton == null) {

singleton = new Singleton();

}

return singleton;

}

2)双重检查锁

优点:线程安全,进行双重检查,保证只在实例未初始化前进行同步,效率高 缺点:还是实例非空判断,耗费一定资源

public static Singleton getInstance() {

if (singleton == null) {

synchronized (Singleton.class) {

if (singleton == null) {

singleton = new Singleton();

}

}

}

return singleton;

}

3)静态内部类

优点:既避免了同步带来的性能损耗,又能够延迟加载

public class Singleton {

 

private Singleton() {

 

}

 

private static class SingletonHolder {

private static final Singleton singleton = new Singleton();

}

 

public static Singleton getInstance() {

return SingletonHolder.singleton;

}

}

(3)枚举

天然线程安全,可防止反射生成实例。

public enum Singleton {

    INSTANCE;

public void init() {

System.out.println("资源初始化。。。");

}

}

 

13. 原型模式(原型设计模式)详解

14. 工厂方法模式(详解版)

15. 抽象工厂模式(详解版)

16. 建造者模式(Bulider模式)详解

17. 结构型模式概述(结构型模式的分类)

18. 代理模式(代理设计模式)详解

19. 适配器模式(Adapter模式)详解

20. 桥接模式(Bridge模式)详解

21. 装饰模式(装饰设计模式)详解

22. 外观模式(Facade模式)详解

23. 享元模式(详解版)

24. 组合模式(详解版)

25. 行为型模式概述(行为型模式的分类)

26. 模板方法模式(模板方法设计模式)详解

27. 策略模式(策略设计模式)详解

28. 命令模式(详解版)

29. 责任链模式(职责链模式)详解

30. 状态模式(详解版)

31. 观察者模式(Observer模式)详解

32. 中介者模式(详解版)

33. 迭代器模式(详解版)

34. 访问者模式(Visitor模式)详解

35. 备忘录模式(详解版)

36. 解释器模式(详解版)

37. UMLet的使用与类图的设计

38. 创建型模式应用实验

39. 结构型模式应用实验

40. 行为型模式应用实验

Java设计模式:23种设计模式

标签:详解   方法   复用   需要   通过   迪米特   职责   法则   col   

原文地址:https://www.cnblogs.com/yuarvin/p/10849143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!