好程序员Java教程分享Java之设计模式
导读:本文共4603字符,通常情况下阅读需要15分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 好程序员Java实用教程之设计模式,首先来讲一下单例设计模式单例设计模式/* * 设计模式:前人总结出来的对一些常见问题的解决方案,后人直接拿来使用. * 常用的设计模式:单例,工厂,代理,适配器,装饰,模板,观察者等,一共有23种 * 单例:一个类只允许有一个对象,建立一个全局的访问点,提供出去供大家使用. * * 分析: * 1.我们肯定... ...
目录
(为您整理了一些要点),点击可以直达。好程序员Java实用教程之设计模式,首先来讲一下单例设计模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
Lambda表达式是Java8之后的新特性
Lambda表达式是函数式编程
Java-->面向对象语言 block代码块(闭包) 函数式编程(接近于面向过程) --> 面向对象
什么是函数式编程?函数式编程(英语:functional programming)或称函数程序设计,
又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数(cos sin tan)计算,
并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。
而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。
ps:λ这个符号可以在搜狗输入法的符号中显示
而在面向对象编程中,面向对象程序设计(英语:Object-oriented programming,缩写:OOP)
是种具有对象概念的程序编程范型,同时也是一种程序开发的方法。它可能包含数据、属性、代码与方法。
对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、
灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,
计算机程序会被设计成彼此相关的对象。
将接口的实现方式重匿名内部类的形式简化为了一个函数式表达式方式
简化接口实现
(形参参数) -> 表达式 或{方法体};
ps:
Lambds表达式就是实现了当前接口中的方法及简
void show();
() -> {System.out.println("我是Lambda表达式")};
1.形参列表
形参列表允许省略参数类型,若形参列表中只有一个参数,形参列表的原括号也可以省略
ps:形参列表 对应的是 接口中所需要实现方法的 形参列表
void show(int a, int b);
void display(int c);
(int a,int b) -> {实现};
(int a) -> {实现};
a -> {实现};
2.箭头(->)
必须是英文状态下的符号 减号(-) + 大于号(>) 指向实现代码块
3.代码块:
若代码块只包含一条语句,Lambda表达式允许允许省略花括号
若Lambda表达式中只有一条return,可以省略return关键字
若Lambda表达式中有多条语句(实现方法的逻辑)不能省略大括号
ps:Java中Lambda表达式的结合需要和接口完成
Stream API --> 流式编程
看Lambda包Test类
Lambda表达式还能作为参数传递
看Lambda包TestDemo类
ps:Java8中若这个接口需要使Lambda表达式实现此时我们需要在这个接口上提供一个注解
@FunctionalInteFace
Lambda表达式引用全局变量和局部变量
看Lambda包TestDemo2类
1.引用类方法
在函数式接口中定义的抽象方法,而方法的实现是触发某个类方法实现此时我们就可以通过 :: 形式完成
看Lambda包TestDemo3
2.引用实例方法(成员方法)
在函数式接口中定义的抽象方法,而方法的实现是通过触发某类类创建的来完成时我们就可以 通过 :: 形式完成
看Lambda包TestDemo4;
版本二:
在函数式接口中定义的抽象方法,而方法上的实现是通过抽象方法中特定的对象参数来完成我们可以通过 :: 形式完成
不过 :: 之前是当前对象的数据了类型,而非 new出一个对象
看Lambda包TestDemo5;
3.引用构造方法
在函数式接口中定义的抽闲方法,而该方法的实现是通通过new 来创建对象,此时我们就可以使用 :: 形式来完成
ps:固定形式 构建对象的类型 :: new;
看Lambda包TestDemo6;
在上面两个案例中使用到了一个全新的形式 类或(对象) :: 静态方法/成员方法
若在Lambda表达式中引用了静态方法或成员方法时 只有一句话 ,可以使用 :: 形式进行简化
:: 之前 是这个方法主要的调用发起者 类/对象
:: 之后 静态方法/成员方法
ps:一定要主要 方法后面千万不要传入参数
调用方法的参数,会通过接口中方法的参数进行传递
Lambda表达式和匿名内部类的区别
1.匿名内部类可以为任意接口创建对象,不管接口中包含多少个抽象方法,只要匿名内部类实现所有方法即可
但是Lambda表达式只能为函数式接口创建对象(只能实现一个抽象方法)
2.匿名内部类可以为抽象类甚至是普通类创建对象
但是Lambda表达式只能为函数接口创建对象
3.匿名内内部类实现的抽象方法方法体允许调用接口定义默认(default)方法
但是Lambda表达式的实现是不允许调用默认方法的
Lambda的实际引用
看Lambda包TestDemo7;
ps:
1.需要记住形式为了Scala做准备
2.Lambda可以替换匿名内部类一次实现的方式
Lambda只能实现接口中一个抽方法.
好程序员Java教程分享Java之设计模式的详细内容,希望对您有所帮助,信息来源于网络。