JAVA_SE基礎知識——設計模式、Lambda表達式

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方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章