java多线程--2 静态代理、Lambda表达式

静态代理

package com.ssl.demo02;

//静态代理
//真实对象和代理对象都要实现同一个接口
//代理对象必须要代理真实角色 //好处
//代理对象可以做很多真实对象做不了的事情
//真实对象专注做自己的事情 public class StacticProxy {
public static void main(String[] args) { You you = new You(); //Lamda表达式
new Thread(()-> System.out.println("我爱你")).start(); new WeddingCompany(new You()).HappyMarry(); /**相当于上面一行
WeddingCompany weddingCompany = new WeddingCompany(new You());
weddingCompany.HappyMarry();
*/
}
} interface Marry{
/**人间四大喜事
* 久旱逢甘霖
* 他乡遇故知
* 洞房花烛夜
* 金榜题名时
*/ void HappyMarry();
} //真实角色
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("happy");
}
} //代理角色,帮You 结婚
class WeddingCompany implements Marry{
//真实目标角色
private Marry target; public WeddingCompany(Marry target){
this.target=target;
} @Override
public void HappyMarry() {
before();
this.target.HappyMarry(); //真实对象
after(); } private void after() {
System.out.println("收尾款");
} private void before() {
System.out.println("结婚之前,布置现场");
} }

Lamda表达式(JDK8新增)

  • 希腊字母表中的第十一个字母,英文名称为Lambda
  • 作用:
    • 避免匿名内部类太多
    • 可以让代码看起来更简洁
    • 去掉了一对没有意义的代码,只留下核心逻辑
  • 实质:属于函数式编程的概念
(params) ->expression[表达式]      a -> System.out.println("i like lambda-->"+a);
(params) ->statement[语句]
(params) ->{statements}

关键:

函数式接口:

  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
  • 对于函数式接口,我们可以通过lambda表达式来创建改接口的对象。

代码不断简化的过程 函数式接口

  • 实现类->静态内部类->局部内部类->匿名内部类->Lanbda实现

无参案例

package com.ssl.demo02;

public class TestLambda {

    //3.静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda2");
}
} public static void main(String[] args) { //接口new了一个实现类
ILike like = new Like(); like.lambda(); like = new Like2(); like.lambda(); //4.局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda3");
}
} like = new Like3(); like.lambda(); //5.匿名内部类,没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4");
}
}; like.lambda(); //6.Lambda简化
like = () -> System.out.println("I like lambda5");
like.lambda(); }
} //1.定义一个函数式接口
interface ILike{
void lambda();
} //2.实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}

有参案例

package com.ssl.demo02;

public class TestLamvda2 {

    //3.静态内部类
static class Love2 implements ILove{
@Override
public void love(int a) {
System.out.println("I love2 "+a);
}
} public static void main(String[] args) {
ILove love = new Love();
love.love(1); love = new Love2();
love.love(2); //4.局部内部类
class Love3 implements ILove{
@Override
public void love(int a) {
System.out.println("I love3 "+a);
}
} love = new Love3();
love.love(3); //5.匿名内部类
love = new ILove() {
@Override
public void love(int a) {
System.out.println("I love4 "+a);
}
};
love.love(4); //6.Lambda实现
love = (a) -> System.out.println("I love5 "+a);
love.love(5); love = a -> System.out.println("I love6 "+a);
love.love(6); /**总结
* 1.Lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹。
* 2.前提是接口为函数式接口
* 3.多个参数可以去掉参数类型
* 4.多个参数必须加括号
*/ } } //1.定义接口
interface ILove{
void love(int a);
} //2.实现类
class Love implements ILove{
@Override
public void love(int a) {
System.out.println("I love "+a);
}
}

java多线程--2 静态代理、Lambda表达式的更多相关文章

  1. 第40天学习打卡(静态代理 Lambda表达式 线程状态 线程同步 同步方法)

    静态代理  package com.kuang.demo03; //静态代理模式总结 //真实对象和代理对象都要实现同一个接口 //代理对象要代理真实角色 //好处:  //代理对象可以做很多真实对象 ...

  2. Java多线程之静态代理

    package org.study2.javabase.ThreadsDemo.staticproxy; /** * @Date:2018-09-18 静态代理 设计模式 * 1.真实角色 * 2.代 ...

  3. 黑马程序员:Java基础总结----静态代理模式&动态代理

    黑马程序员:Java基础总结 静态代理模式&动态代理   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public  class  Ts {   ...

  4. Java中的静态代理实现方式

    1.编写一个接口类 如:Subject package com.neusoft.pattern.staticProxy; /** * <p>Title:</p> * <p ...

  5. Java 终于在 Java 8 中引入了 Lambda 表达式。也称之为闭包或者匿名函数。

    本文首发于 blog.zhaochunqi.com 转载请注明 blog.zhaochunqi.com 根据JSR 335, Java 终于在 Java 8 中引入了 Lambda 表达式.也称之为闭 ...

  6. [Java] 设计模式:代码形状 - lambda表达式的一个应用

    [Java] 设计模式:代码形状 - lambda表达式的一个应用 Code Shape 模式 这里介绍一个模式:Code Shape.没听过,不要紧,我刚刚才起的名字. 作用 在应用程序的开发中,我 ...

  7. Effective Java 第三版——42.lambda表达式优于匿名类

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  8. Java之线程池和Lambda表达式

    线程池和lambda表达式 学习线程池和lambda表达式的理解 补充一个知识点(单例设计模式) 在多线程中,我们只需要一个任务类,为了防止创建多个任务类,这个时候就需要用到单例模式,单例模式有两种设 ...

  9. [19/04/06-星期六] 多线程_静态代理(StaticProxy)和 lamda (简化代码,jdk8新增)

    一.静态代理 [代码示例] /*** * 静态代理:记录日志等,类是写好的,直接拿来用. 动态代理:随用随构建,临时抱佛脚 * 婚庆公司:代理角色,帮你搞婚庆的一切,布置房间等等 * 自己:真实角色, ...

  10. java 8 学习二(Lambda表达式)

    粗略的概括:lambda表达式主要用来实现“函数接口”中“唯一”的抽象方法用的. 他的特殊版有 方法引用,构造函数引用,用对应的接口实例接收即可. 可以把Lambda表达式理解为简洁地表示可传递的匿名 ...

随机推荐

  1. 安装filebeat

    Filebeat是本地文件的日志数据采集器. 作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,tail file,并将它们转发给Elasticsearch或Logstash进行索引 ...

  2. js 导出json文件

    var data={}//处理得到的json字符串 var filename = 'json.json'//json文件名 if(typeof data === 'object'){ ddd = JS ...

  3. https://计算机四级

    计算机四级内容: 一,网络工程师 基本要求 1.了解大型网络系统规划.管理方法: 2.具备中小型网络系统规划.设计的基本能力: 3.掌握中小型网络系统组建.设备配置调试的基本技术: 4.掌握企事业单位 ...

  4. Jmeter-接口测试(二)

    鉴权码获取: 1.通过接口获取 appid secret  (第三方用户唯一凭证, 第三方用户唯一凭证秘钥) 2.登录之后自动生成 username,password 一.jmeter 接口关联 1. ...

  5. Vue声明式渲染、条件与循环、事件绑定、双向绑定及生命周期钩子函数

    VUE基础介绍 Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用. -声明式渲染 <div> {{ message }} </ ...

  6. cesium 學習計劃

    上篇已经将cesium环境搭建完成,并且服务启动完成,进去后主要浏览 documents 文档和Sandcastle 示例. 学习计划:沙盒示例学习一遍,每个示例中的查看对应代码接口. 学习cesiu ...

  7. C# Http 服务器get pos 请求 获取头信息 iOS 客户端联调

    using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text ...

  8. PHP做API开发该如何设计签名验证

    前言 开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证. 我们在设计签名验证的时候,请注意要满足以下几点: 可 ...

  9. 关于php pconnect长连接如何刷新连接的讨论

    由于每个pconnect所建立的连接信息和单个进程绑定.线上偶发了redis在某一台机器php-fpm上连接正常而无法进行任何操作的问题. 先说结论 查看redis拓展官方文档 close方法 有一句 ...

  10. 用JS实现一个简单的购物车小案例

    该案例主要是实现的功能有:添加商品功能,将商品添加到购物车的功能还有将商品删除功能,还有就是移出购物车的功能 该案例实现的难点是将商品添加到购物车列表的时候 数量的增加,当购物车有该商品的时候就进行累 ...