单例设计模式 & 简单工厂设计模式 & lambda表达式


话说着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");
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值