JAVA_SE基础知识——设计模式、Lambda表达式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43841301/article/details/101067403

1、设计模式:

是一套被反复使用、多人知晓的、经过分类编目的、代码设计经验的总结
	a、单例模式 ---> 只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有
		一个实例而且该实例易于外界访问。如果在系统中某个类的对象只能存在一个,可以
		用单例模式。
	   单例的实现:提供一个私有的构造方法;提供一个公开的静态方法返回类的对象。
	   
   好处:1、某些类创建比较频繁,对于大型的对象,是一笔很大的开销
	 2、省去了new的操作,降低了内存的使用频率,减轻GC压力
	 3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话
		系统就乱了;	   

   分为:饿汉式和懒汉式	    
   eg:饿汉式---线程安全
	public class SingleTon {
		// 私有静态的属性
		private static SingleTon singleTon = new SingleTon();
		// 私有的构造方法
		private SingleTon() {

			}
		// 公开的静态方法,返回一个对象的实例
		public static SingleTon getSingleTon() {
			return singleTon;
			}
	}
	懒汉式---线程不安全,多线程不能正常访问
	public class SingleTon2 {
		// 私有静态的属性
		private static SingleTon2 singleTon2 = null;

		// 私有的构造方法
		private SingleTon2() {

		}

		// 公开的静态方法,返回一个对象的实例
		public static SingleTon2 getSingleTon() {
			if (singleTon2 == null) {
				singleTon2 = new SingleTon2();
			}
			return singleTon2;
		}
	}
	测试类
	SingleTon singleTon=SingleTon.getSingleTon();
	SingleTon2 singleTon2=SingleTon2.getSingleTon();

b、工厂模式---用工厂方法代替new操作的一种模式
   eg:public class FruitFactory {
		public Fruit make(String name) {
		Fruit f = null;
		if (name.equalsIgnoreCase("apple")) {
			f = new Apple();
		} else if (name.equalsIgnoreCase("Watermelon")) {
			f = new Watermelon();
		}
		return f;
		}
	}
	测试类:FruitFactory ff=new FruitFactory();
		Apple apple= (Apple) ff.make("apple");

c、代理模式---代理主题来操作真实主题,真实主题执行具体的任务操作

2、Lambda表达式—通过表达式来代替功能接口

基本语法:(parameters)->expression 或者 (parameters)->{statements;}

可以用来遍历列表:
	List<String> li=new ArrayList<>();
	li.add("aaa");
	li.add("bbb");
	li.add("ccc");
	li.add("ddd");
	li.forEach((l)->{
		if (l.endsWith("d")) {
			System.out.println(l);
		}else {
			System.out.print(l+";");
		}
	});

3、对象比较器—用来给对象排序(加泛型)

a、comparable  接口
   此接口强行给每一个类的对象进行整体排序。实现该接口 重写compareTo方法
b、comparator  接口
   类已经定义好时,不用修改类,做一个比较器类实现该接口,重写compare方法

猜你喜欢

转载自blog.csdn.net/weixin_43841301/article/details/101067403