裝飾者模式 門面設計模式 工廠方法模式

2021-10-11 09:23:25 字數 2309 閱讀 6011

一、裝飾者模式定義:

在不改變原有物件的基礎上,將功能附加到物件上

public class decoratortest 

public inte***ce component

static class concreate implements component

}static abstract class decorator implements component

}static class concretedecortor1 extends decorator

@override

public void opration()

}static class concretedecortor2 extends decorator

@override

public void opration()

}}

應用場景:擴充套件乙個類的功能或給乙個類新增附加職責

有點:1.不改變原有物件的情況下給乙個物件擴充套件功能

2.使用不同組合可以實現不同的效果

3.符合開閉原則,對修改進行關閉對拓展進行開放

二、門面設計模式定義:

為子系統的一組介面提供乙個一致的介面,facade [fəˈsɑːd](表面的意思)模式定義了乙個高層介面,這個接使得這一子系統更加容易使用。

public class facadetest 

// 門面角色,客戶端可以呼叫此方法來和其他子系統打交道

static class facade

}// 子系統角色

static class subsystem1

}static class subsystem2

}static class subsystem3

}}

三、工廠方法模式定義:

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method 使得乙個類的例項化延遲到子類

修改前

public class factorytest 

static class producta

}private producta createproduct()

producta getobject()

}}

修改後

public class factorytest2 

public inte***ce product

static class producta implements product

}static class productb implements product

}// 這個是變化的,交給子類去處理

// 這個就是乙個工廠方法,讓product的實現延遲到子類

abstract product createproduct();

product getobject()

}// 例項化的過程已經到我們具體的實現裡面

@override

product createproduct()

}@override

product createproduct()

}}

應用場景:

1.當你不知道該使用物件的確切型別的時候

2.當你希望為庫或者框架提供擴充套件其內部元件的方法時

主要優點:

1.將具體產品和建立者解耦

2.符合單一職責原則

3.符合開閉原則

四、在main()方法中不能建立非靜態內部類的例項:

public class outerclass 

public void foo()

public class innerclass

public static class staticinnerclass

}

1:非靜態內部類,必須有乙個外部類的引用才能建立。

2:在外部類的非靜態方法中,因為有隱含的外部類引用this,所以可以直接建立非靜態內部類。

3:在外部類的靜態方法中,因為沒有this,所以必須先獲得外部類引用,然後建立非靜態內部類。

4:靜態內部類,不需要外部類引用就可以直接建立。

5:同時靜態的內部類,也不能直接訪問外部類的非靜態方法。

6:由此可以推測,非靜態內部類之所以可以直接訪問外部類的方法,是因為建立非靜態內部類時,有乙個隱含的外部類引用被傳遞進來。

設計模式 工廠方法模式

一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...

設計模式 工廠方法模式

1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...

設計模式 工廠方法模式

框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...