话说着lambda表达式跟es6的箭头函数长得好像 hhahahahahahahaaha
单例设计模式
核心:
构造方法私有:不能在类外随意创建对象
在类内部声明一个本类静态的对象作为属性
提供一个公有静态的方法用来获取本类对象
懒汉式
public class SingleTon {
private SingleTon(){
}
private static SingleTon instance;
public static SingleTon getInstance(){
if(instance == null) {
instance=new SingleTon();
}
return instance;
}
}
SingleTon singleTon=SingleTon.getInstance();
饿汉式
public calss SingleleTon {
private SingleTon(){
}
private static SingleTon instance=new SingleTon();
public static SingleTon getInstance(){
return instance;
}
}
SingleTon singleton=SingleTon.getInstance();
思考:懒汉式和饿汉式有什么区别?
书写上的区别:懒汉是调用方法时初始化对象,饿汉是声明同时初始化
使用上没有区别
存储时:在第一次获取单例类对象前,懒汉比饿汉节省空间
多线程操作时区别:懒汉式存在线程安全问题,饿汉式不存在
简单工厂设计模式
核心:简单工厂设计模式: 把对象的创建交给一个独立的工厂类创建。把对象的创建和使用分隔开
1 父类产品
2 子类产品
3 工厂
4 客户程序
/**
* 服装类
*/
public abstract class Clothing {
//准备布料
public abstract void prepare();
//包装
public abstract void box();
}
/**
* 裤子
*/
public class Trousers extends Clothing{
@Override
public void prepare() {
System.out.println("准备制作裤子的布料......");
}
@Override
public void box() {
prepare();
System.out.println("包装完毕.....");
}
}
/**
* T恤
*/
public class Tshirt extends Clothing{
@Override
public void prepare() {
System.out.println("准备制作T恤的布料...");
}
@Override
public void box() {
prepare();
System.out.println("打包T恤.....");
}
}
public class Factory {
/**
* 创建对象方法
* 1 表示 Trousers
* 2 表示 Tshirt
* @return
*/
public static Clothing create(int type) {
Clothing clothing=null;
if(type==1) {
clothing=new Trousers();
}else if(type==2){
clothing=new Tshirt();
}
if(clothing!=null) {
clothing.box();
}
return clothing;
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("--------欢迎来到郑帅服装厂--------");
System.out.println("-----------1 裤子 2 T恤-----------------");
System.out.println("请选择购买的衣服");
Scanner input=new Scanner(System.in);
int choice=input.nextInt();
Clothing clothing=Factory.create(choice);
if(clothing!=null) {
System.out.println("购买成功");
}else{
System.out.println("购买失败");
}
}
}
lambda表达式
入门使用
exp1
public interface Add {
public abstract int add(int a,int n);
}
Add add=(x,y) ->{
int z=x+y;
return z;
};
//简化为 x,y均为变量
//Add add=(x,y) ->x+y;
add.add(3,4);
exp2
public interface Inter {
public abstract void toUpper(String s);
}
//s为变量
Inter inter=(s) ->System.out.println(s.toUpperCase());
inter.toUpper("cccccccc");