静态代理

要点:

公共接口

真实角色

代理角色

public class StaticProxy {
public static void main(String[] args) {
You you = new You();
WeddingCompany com = new WeddingCompany(you);
com.happyMarry(); System.out.println("####################"); new WeddingCompany(new You()).happyMarry(); //new Thread(线程对象).start();
} } interface Marry{
void happyMarry();
} class You implements Marry{ @Override
public void happyMarry() {
System.out.println("我花开尽百花杀");
}
}
// 代理角色
class WeddingCompany implements Marry {
// 真实角色
private Marry target; public WeddingCompany(Marry target) {
super();
this.target = target;
} @Override
public void happyMarry() {
ready();
this.target.happyMarry();
after();
} private void ready() {
System.out.println("待到秋来九月八");
} private void after() {
System.out.println("冲天香阵透长安");
}
} /*
待到秋来九月八
我花开尽百花杀
冲天香阵透长安
####################
待到秋来九月八
我花开尽百花杀
冲天香阵透长安
满城尽带黄金甲(这句是来凑数的)
*/

lambda

使用lambda可避免匿名内部类定义过多

实质输入函数式编程的概念

(params) -> expression
(params) -> statement
(params) -> {statements}
/***************匿名内部类与接口同名时*************/
/**
* 匿名内部类与接口同名
* @author Administrator
*
*/
public class TestHaHa { public static void main(String[] args) {
ILike_1 like = new ILike_1() {
public void lambda() {
System.out.println("I like lambda(匿名内部类).");
}
};
like.lambda(); // 这个和接口同名匿名内部类必须实现接口中的方法, 否则报错
// ILike_1 like_1 = new ILike_1() {
// public void lambda_1() {
// System.out.println("I like lambda(匿名内部类).");
// }
// };
} } interface ILike_1{
void lambda();
}
/*
I like lambda(匿名内部类).
*/
/**************lambda无参数形式**************/
public class LambdaTest01 {
// 静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda(静态内部类).");
}
} public static void main(String[] args) {
ILike like = new Like();
like.lambda(); like = new Like2();
like.lambda(); class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda(方法内部类).");
}
}
like = new Like3();
like.lambda(); // 匿名内部类
like = new ILike() {
public void lambda() {
System.out.println("I like lambda(匿名内部类).");
}
};
like.lambda(); // lambda,
like = ()->{
System.out.println("I like lambda(lambda).");
};
like.lambda(); /********lambda推到必须存在类型*****************
()->{
System.out.println("I like lambda(lambda).");
};
like.lambda();
*/
}
} interface ILike{
void lambda();
} // 外部类
class Like implements ILike{ @Override
public void lambda() {
System.out.println("I like lambda(外部类).");
}
} /*
I like lambda(外部类).
I like lambda(静态内部类).
I like lambda(方法内部类).
I like lambda(匿名内部类).
I like lambda(lambda).
*/
/************一个形参**************/
public class LambdaTest02 { public static void main(String[] args) {
ILove love = (int a) -> {
System.out.println("I like lambda(外部类)---->" + a);
};
love.lambda(100); // 简化
love = (a) -> {
System.out.println("I like lambda(外部类)---->" + a);
};
love.lambda(50); // 简化, 只有一个参数时
love = a -> {
System.out.println("I like lambda(外部类)---->" + a);
};
love.lambda(5); // 简化, 只有一行代码时, 多行代码不能简化
love = a -> System.out.println("I like lambda(外部类)---->" + a);
love.lambda(0);
}
} interface ILove{
void lambda(int a);
} // 外部类
class Love implements ILove{ @Override
public void lambda(int a) {
System.out.println("I like lambda(外部类)---->" + a);
}
} /*
I like lambda(外部类)---->100
I like lambda(外部类)---->50
I like lambda(外部类)---->5
I like lambda(外部类)---->0
*/
/************形参+返回值**************/
public class LambdaTest03 {
public static void main(String[] args) {
IInterest interest = (int a1, int b1) -> {
System.out.println("I like lambda(外部类)---->" + a1 + b1);
return a1 + b1;
};
System.out.println(interest.lambda(100, 200)); // 简化
interest = (a1, b1) -> {
System.out.println("I like lambda(外部类)---->" + a1 + b1);
return a1 + b1;
};
interest.lambda(100, 40); interest = (a, c) -> {return a + c;}; interest = (a, c) -> a + c; interest = (a, c) -> 0; System.out.println(interest.lambda(10, 29));
}
} interface IInterest{
int lambda(int a, int b);
} // 外部类
class Interest implements IInterest{ @Override
public int lambda(int a1, int b1) {
System.out.println("I like lambda(外部类)---->" + a1 + b1);
return a1 + b1;
}
} /*
I like lambda(外部类)---->100200
300
I like lambda(外部类)---->10040
0
*/
/*****************还能这么玩*****************/
public class TestHaHa { public static void main(String[] args) {
ILike_1 like_1 = () -> {
System.out.println("haha");
}; like_1.haha();
} } interface ILike_1{
void haha();
} /*
haha
*/
/************Thread + Lambda**************/
public class LambdaTest04 {
public static void main(String[] args) {
new Thread(()->{
System.out.println("学习lambda");
}).start();
new Thread(()->System.out.println("学习lambda")).start();
}
} /*
学习lambda
学习lambda
*/

最新文章

  1. Scala快速概览
  2. Python 2x -> 3.x
  3. 服务器端高性能的IO模型 转自酷勤网
  4. Nginx+Tomcat+Memcached负载均衡集群服务搭建
  5. 如何让网页打开就运行JS代码,不用onclick
  6. web.py 学习(二)Worker
  7. jquery各种事件使用方法总结(from:天宇之游)
  8. c# 多线程 --Mutex(互斥锁) 【转】
  9. vue项目实践-前后端分离关于权限的思路
  10. Docker学习(转)
  11. POJ 3078 - Shuffle'm Up - [模拟题]
  12. NLP常用术语解析
  13. 【hyperscan】编译hyperscan 4.0.0
  14. 从nsq中学习如何优雅的退出go 网络程序
  15. Hibernate: No Session found for current thread
  16. JavaScript创建对象的4种方法
  17. Linux内核调试技术——jprobe使用与实现
  18. 设置tableview 右侧 索引字体的大小
  19. php过滤数组空值
  20. 有向有权图的最短路径算法--Dijkstra算法

热门文章

  1. 028 01 Android 零基础入门 01 Java基础语法 03 Java运算符 08 逻辑“或”运算符
  2. Arduino 跑马灯
  3. 如何查找一个为NULL的MYSQL字段
  4. 【Flutter Widgets大全】电子书开源
  5. RHSA-2019:0201-低危: systemd 安全更新
  6. day65:nginx代理&nginx负载均衡
  7. Mac 每次都要执行source ~/.bash_profile 后,配置的环境变量才生效
  8. IDEA项目路径初探
  9. 【转载】opencvVS2019配置方法
  10. Git软件操作过程