工廠方法是選擇單個產品的實現,雖然乙個類裡面可以有多個工廠方法,但是這些方法之間一般是沒有聯絡的,即使看起來像有聯絡。類似於控制反轉或依賴注入。
本質是延遲到子類來選擇實現。
package com.guo.task;
/**
* 工廠方法,建立c1,類似於從子類注入進來的途徑
* @author
guo
*/ public
abstract
class a1
塊中的初始化器)初始化資料時
2 訪問
final
欄位時
3 在建立執行緒之前建立物件時
4 執行緒可以看見他將要處理的物件時
下面**的解決多執行緒問題:這種可行的方式就是採取類級內部類,在這個類級內部類裡面去建立物件例項。這樣一來,只要不是用到這個類級內部類,那就不會建立物件例項,從而同時實現延遲載入和執行緒安全。
package com.guo.task;
/**
* 安全的單例模式,解決的多執行緒問題
* @author
guo
*/ public
class
singleton
public
static
singleton getinstance()catch(exception e)catch(exception e){
e.printstacktrace();
return obj;
生成器模式的重心還是在於分離整體構建演算法和部件構造。
package com.guo.task;
/**
* 生成器模式
* @author
guo
*/ public
inte***ce builder{
public
void buildpart();
public
inte***ce product{
//定義產品的操作
public
class concreatebuilder implements builder{
private product resultproduct;
//獲取最後的生成物件
public product getresult(){
return
resultproduct;
public
void buildpart(){
public
class director{
private builder builder;
public director(builder builder){
this.builder=builder;
public
void construct(){
builder.buildpart();
一些設計模式的例項
1.單例模式 class msginit str var singlecase function instance.init text return instance m1和m2顯示的是在同乙個盒子裡 var m1 singlecase hello var m2 singlecase world c...
設計模式 一些概念
為乙個相關或相依賴的物件家族提供統一的建立介面,並無需指定實體類。剛才是設計模式藝術中摘要中為抽象工廠模式所定義的問題 每個模式都描述著一種在我們的環境中一遍又一遍地出現的問題,並描述了對該問題的核心解決方案。以此方式你可以使用該方案上百萬次,而不需要重複的做同樣的事情 乙個設計模式的核心 命名,問...
ACM 之前的一些總結
對於之前的一些題目的總結。編譯的時候加上 ddebug選項就可以控制freopen c include include include int main 使用const好處在於,可以確定變數的型別,而不是單純的一段 該程式是乙個死迴圈 i不可能直接 10,最好的方法是fabs i 10 1e 5 c...