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种设计模式的更多相关文章

  1. 从追MM谈Java的23种设计模式(转)

    从追MM谈Java的23种设计模式    这个是从某个文章转载过来的.但是忘了原文链接.如果知道的,我追加一下. 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西 ...

  2. JAVA:23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  3. 从追MM谈Java的23种设计模式

    从追MM谈Java的23种设计模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯 德基,只管向服务员说“来四个鸡 ...

  4. Java实现23种设计模式

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  5. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  6. Java中23种设计模式(附代码样例)

    一.设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式.结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...

  7. Java 开发23种设计模式

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. Java的23种设计模式(转)

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  9. Java的23种设计模式<一>

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代 码可靠性. 毫无疑问,设计模式 ...

  10. java的23种设计模式之建造者模式

    场景和本质 场景 本质 案例 原理 应用场景 场景和本质 场景 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样一个问题需要处理:装配这些子组件是不是有个步骤问题? ...

随机推荐

  1. redis常用笔记(第一版)

    1.SINTER 说明:多key之间取交集数据 key1 = {a,b,c,d} key2 = {c} key3 = {a,c,e} SINTER key1 key2 key3 = {c} 2.sad ...

  2. dedecms织梦二次开发报名表单模块插件安装及配置详细教程

    网上找了很多,都不是太满意,功能不全不全不说,还没有详细的安装配置教程,经过自己的折腾,成功了修改程序并配置成功,亲测,试用没有问题!所以,决定给大家出一个针对新手的详细教程. 废话不多,直接上干货. ...

  3. 03 python基础作业(一)

    1.将['alex','eric',’rain’]用下划线拼接成字符串.(['alex','eric',123]呢?) li=['alex','eric','rain'] v='_'.join(li) ...

  4. LeetCode_20-Valid Parentheses

    给定一个字符串,其中包含字符’(’,’)’,’[’,’]’,’{‘,’}’,左括号必须匹配右括号,一对匹配的括号不能单独出现单个左括号或者右括号.如:(()[])有效,[(])无效空字符串也算是有效的 ...

  5. Kafka 介绍

    Apache Kafka是一个分布式流式平台. 流平台有三个关键的能力: 发布和订阅记录流,类似于消息队列或企业消息传递系统. 使用容错耐用的方式存储记录流. 记录产生时处理数据. Kafka主要是用 ...

  6. Switch-case语句的应用

    /** switch语句有关规则    • switch(表达式)中表达式的值必须是下述几种类型之一:byte,short, char,int,枚举 (jdk 5.0),String (jdk 7.0 ...

  7. GUI tkinter (Entry) 输入框篇

    """1.其他函数不常用,这里只说get函数,get函数使用的时候不需要任何参数,它的返回值就是该输入框的内容.""" from tkint ...

  8. Angry Words 愤怒的话

    _ Words said in anger are like scars left by nails in a fence. Even though you can pull all the nail ...

  9. Validator 常用注解

    说明 Validator主要是校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等.那么在spring boot怎么使用这么强大的校验框架呢. 常用 @null 验 ...

  10. java猜数游戏

    java随机数的产生 int number=(int)(Math.random()*10+1) Math.random()*n //n个随机数,从0开始 do{}while循环 //猜数,1到10的随 ...