【Java】簡單工廠模式、工廠模式、介面卡模式
一、簡單工廠模式
1、 又叫靜態工廠方法模式,它定義一個具體的工廠類負責建立一些類的例項
2、優點: 客戶端不需要在負責物件的建立,從而明確了各個類的職責
3、缺點:這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護
4、案例演示
- 動物抽象類:public abstract Animal { public abstract void eat(); }
- 具體狗類:publicclass Dog extends Animal {}
- 具體貓類:publicclass Cat extends Animal {}
- 開始,在測試類中每個具體的內容自己建立物件,但是,建立物件的工作如果比較麻煩,就需要有人專門做這個事情,所以就知道了一個專門的類來建立物件。
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Dog d = (Dog) AnimalFactory.createAnimal("dog"); //工廠返回的是一個animal類,此時需要強制轉換
d.eat();
Cat c = (Cat) AnimalFactory.createAnimal("cat");
c.eat();
}
}
public class AnimalFactory {
/*public static Dog createDog() {
return new Dog();
}
public static Cat createCat() {
return new Cat();
}*/
//發現方法會定義很多,複用性太差
//改進
public static Animal createAnimal(String name) { //返回的是一個animal類
if("dog".equals(name)) {
return new Dog();
}else if("cat".equals(name)) {
return new Cat();
}else {
return null;
}
}
}
二、工廠方法模式概述
* 工廠方法模式中抽象工廠類負責定義建立物件的介面,具體物件的建立工作由繼承抽象工廠的具體類實現。
1、優點
- 客戶端不需要在負責物件的建立,從而明確了各個類的職責,如果有新的物件增加,只需要增加一個具體的類和具體的工廠類即可,不影響已有的程式碼,後期維護容易,增強了系統的擴充套件性
2、缺點
- 需要額外的編寫程式碼,增加了工作量
public interface Factory { //工廠
public Animal createAnimal();
}
public abstract class Animal { //動物類
public abstract void eat();
}
public class DogFactory implements Factory { //狗工廠實現工廠
@Override
public Animal createAnimal() {
return new Dog(); //狗工廠建立物件,返回的是animal
}
}
public class Dog extends Animal { //狗繼承動物
@Override
public void eat() {
System.out.println("狗吃肉");
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
DogFactory df = new DogFactory(); //建立狗工廠物件
Dog d = (Dog) df.createAnimal(); //狗工廠返回的是animal,需要進行強制轉換
d.eat(); //狗物件呼叫吃的方法
}
}
三、介面卡設計模式-(掌握)
1、什麼是介面卡
- 在使用監聽器的時候, 需要定義一個類事件監聽器介面.
- 通常介面中有多個方法, 而程式中不一定所有的都用到, 但又必須重寫, 這很繁瑣.
- 介面卡簡化了這些操作, 我們定義監聽器時只要繼承介面卡, 然後重寫需要的方法即可.
2、介面卡原理
- 介面卡就是一個類, 實現了監聽器介面, 所有抽象方法都重寫了, 但是方法全是空的.
- 介面卡類需要定義成抽象的,因為建立該類物件,呼叫空方法是沒有意義的
- 目的就是為了簡化程式設計師的操作, 定義監聽器時繼承介面卡, 只重寫需要的方法就可以了.
public class Demo1_Adapter {
/**
* @param args
* 介面卡設計模式
* 魯智深
*/
public static void main(String[] args) {
}
}
interface 和尚 {
public void 打坐();
public void 唸經();
public void 撞鐘();
public void 習武();
}
abstract class 天罡星 implements 和尚 { //宣告成抽象的原因是,不想讓其他類建立本類物件,因為建立也沒有意義,方法都是空的
@Override
public void 打坐() {
}
@Override
public void 唸經() {
}
@Override
public void 撞鐘() {
}
@Override
public void 習武() {
}
}
class 魯智深 extends 天罡星 {
public void 習武() {
System.out.println("倒拔垂楊柳");
System.out.println("拳打鎮關西");
System.out.println("大鬧野豬林");
System.out.println("......");
}
}
相關文章
- 簡單工廠模式—>工廠模式模式
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 工廠模式之簡單工廠模式模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 簡單工廠模式和抽象工廠模式模式抽象
- 工廠模式(簡單工廠模式)快速理解模式
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 簡單工廠和工廠模式模式
- java設計模式-簡單工廠模式Java設計模式
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- 簡單工廠模式模式
- java簡單的工廠模式Java模式
- 建立型:工廠模式-簡單工廠模式
- 簡單工廠和工廠方法模式模式
- 簡單工廠、工廠方法和抽象工廠模式抽象模式
- Java設計模式2:簡單工廠模式Java設計模式
- 設計模式 - 簡單工廠模式設計模式
- 【設計模式】簡單工廠模式設計模式
- 設計模式——簡單工廠模式設計模式
- 設計模式-簡單工廠模式設計模式
- 簡單工廠、工廠模式初學習模式
- Java設計模式之簡單工廠、工廠方法和抽象工廠Java設計模式抽象
- 簡單工廠模式--SimpleFactory模式
- Java常用設計模式之簡單工廠模式Java設計模式
- Java設計模式(一) 簡單工廠模式不簡單Java設計模式
- 工廠三兄弟之簡單工廠模式(三)模式
- 工廠三兄弟之簡單工廠模式(二)模式
- 工廠三兄弟之簡單工廠模式(一)模式
- 設計模式之簡單工廠模式設計模式
- 設計模式(一)—— 簡單工廠模式設計模式
- 簡單工廠模式(設計模式02)設計模式
- java 工廠模式Java模式
- java工廠模式Java模式
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- 設計模式----簡單工廠設計模式
- 秒懂簡單工廠模式模式