設計模式的學習

2021-08-20 08:19:00 字數 3338 閱讀 7729

設計原則:

單一職責原則:

低耦合,高內聚

耦合性:類與類之間產生的關係

低耦合:讓類與類之間的關係不複雜

內聚:執行乙個件事情(功能)的能力

高內聚:乙個類能夠完成的事情,不要使用多個類一起來執行!

資料庫對某個資料進行增刪改查(查詢很重要的)

定乙個介面:

增();

刪();

改();

查();

實現類:

業務邏輯層:

增()2:開閉原則

核心思想是:乙個物件對擴充套件開放,對修改關閉

開發好乙個程式(專案),盡量不要修改原有**

類和類之間假設有關係

更改乙個類的功能,其他類已需要更改(增加**的**的書寫量)

svn(版本控制)/git

設計模式:

建立型模式 物件的建立

結構型模式 物件的組成(結構)

行為型模式 物件的行為

簡單工廠模式--->靜態工廠方法模式 

設計乙個工廠類:

工廠類提供一些靜態方法,間接的去建立具體的物件

優點:不需要再建立具體類的物件,而是把建立的工作交給了工廠類來建立!

弊端:如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護

我們通過**來學習這個模式。

//提供了乙個動物抽象類

public abstract class animal

public class cat extends animal 

}

public class dog extends animal

}

//動物工廠類

public class animalfactory

//想辦法用多型的形式解決:**擴充套件性

public static animal createanimal(string type) else if("dog".equals(type))

return null;

}}

public class animaldemo else 

}}//貓吃魚...

//狗吃骨頭...

//---------------------

//貓吃魚...

//狗吃骨頭...

//抱歉,當前工廠類不提供該動物類的建立

工廠方法模式

提供乙個抽象類(抽象工廠)還需要提供乙個介面(工廠介面),每乙個具體的類都有對應的工廠類(實現工廠介面)

具體物件的建立工作由繼承抽象工廠的具體類實現

優點:客戶端不需要再負責物件的建立(不需顯示建立具體物件),從而明確了各個類的職責,

如果有新的物件增加,只需要增加乙個具體的類和具體的工廠類即可,不影響已有的**,後期維護容易,增強了系統的擴充套件性

弊端:書寫**量大了!

我們通過一段**來具體學習這個模式。

//抽象類

public abstract class animal

public class cat extends animal 

}

public class dog extends animal 

}

public inte***ce factory
//貓的工廠類--->建立乙個只貓

public class catfactory implements factory

}

public class dogfactory implements factory 

}

public class dogfactory implements factory 

}//貓吃魚...

//-------------------

//狗吃骨頭...

設計模式之單例模式

單例模式核心思想:某些類的物件在建立的時候 ,在系統記憶體始終只有乙個物件!

單例模式分類:

1)餓漢式 2)懶漢式(類似於多執行緒環境..)

餓漢式:

在載入那個類的時候,物件的建立工作就已經完成了!

兩種分類在設計上幾乎一樣:

1)定義乙個類,將該類的無參構造方法私有化;

2)在該類的成員位置建立該類物件,並且一定要私有化,防止外界更改這個物件;

3)在該類中提供靜態成員方法(返回值就是建立的那個物件),能被當前類直接呼叫,static修飾。

//學生類

public class student

//成員位置建立該類的例項

//靜態方法只能訪問靜態變數

//加入私有修飾

private static student s = new student() ; //靜態的類變數

//提供乙個公共的成員方法

public static student getstudent()

}

public class studentdemo 

}//true

懶漢式:

符合單例模式核心思想

1)自定義乙個類,將無參構造私有化;

2)在成員位置宣告變數;

3)提供公共靜態功能,在裡面判斷的時候建立該類物件,返回該類物件。

懶漢式(延遲載入 -->懶載入)

可能會出現問題

--->

多執行緒的問題

--->校驗多執行緒安全問題的標準

1)是否是多執行緒環境

2)是否有共享資料

3)是否有多條語句對共享資料進行操作  (使用同步機制進行操作)

public class teacher 

//在成員位置宣告變數

//私有化,並且

private static teacher t = null ;

//靜態的同步方法 (鎖物件: 類名.class)

public synchronized static teacher getteacher()

return t ;

}}

public class teacherdemo 

}//true

設計模式的學習

設計模式使人們可以更加簡單方便地復用成功的設計和體系結構。將已證實的技術表述成設計模式也會使新系統開發者更加容易理解其設計思路。四個基本要素 1.模式名稱 pattern name 乙個助記名,它用一兩個詞來描述模式的問題 解決方案和效果。命名乙個新的模式增加了我們的設計詞彙。設計模式允許我們在較高...

學習設計模式 原型設計模式

先想一下既然要建立新的例項,為什麼不直接使用 new 而要設計出乙個原型模式進行例項的複製呢?這是因為 有的時候,我們也會在不指定類名的前提下生成例項,例如像圖形編輯器中拖動現有的模型工具製作圖形的例項,這種是非常典型的生成例項的過程太過複雜,很難根據類來生成例項場景,因此需要根據現有的例項來生成新...

設計模式學習

知道設計模式已經很久了,但是一直沒有認真的去系統的學習,這幾天才開始逐漸的學習起來。下面是我學習設計模式的一些心得。要想成為一名優秀的軟體設計師或軟體架構設計師,了解一些設計模式是很有必要的。我認為學習設計模式的思路如下 一 基本概念 理解物件導向 理解重用等概念性的東西 1.什麼是物件導向?2.物...