標籤:
java有23中設計模式,Android中也用到了很多的設計模式,本篇就來介紹Android中常用的幾種設計模式
一、普通工廠設計模式
普通工廠設計模式,就是建立一個工廠類負責建立對象 ,使用者根據需求來從工廠類中擷取自己想要的產品。這裡涉及到的三個
詞分別是:工廠 、產品和使用者;這裡要說明的是產品是有共同特徵的,把共同特徵提取出來產生一個介面,所有的產品都去實現這個介面
然後工廠類負責建立這些產品,使用者需要什麼產品去工廠類裡擷取;
代碼實現如下:
產品共同特徵介面
/** * 產品共同特徵介面 * * @author jiaocg * */public interface MyProduct { // 有什麼共同特徵都可以在這裡定義 public void createProduct(String product);}
蘋果類
1 public class Apple implements MyProduct {2 3 @Override4 public void createProduct(String product) {5 System.out.println("我是蘋果");6 }7 8 }
梨類
1 public class Pear implements MyProduct {2 3 @Override4 public void createProduct(String product) {5 System.out.println("我是梨");6 }7 }
工廠類
1 /** 2 * 工廠類 3 * 4 * @author jiaocg 5 * 6 */ 7 public class ProductFactory { 8 9 public MyProduct getProduct(String puduct) {10 if ("蘋果".equals(puduct)) {11 return new Apple();// 要蘋果就返回蘋果12 }13 return new Pear();// 要梨就返回梨14 }15 }
使用工廠類
1 ProductFactory productFactory = new ProductFactory();2 // 我想要蘋果3 MyProduct apple = productFactory.getProduct("蘋果");4 // 我想要梨5 MyProduct pear = productFactory.getProduct("梨");
二、抽象工廠設計模式
抽象工廠設計模式是對普通工廠設計模式的拓展,普通工廠設計模式的缺點是,如果有新的產品出現,我們就要修改工廠類,去添加新的產品,
這樣破壞了程式封閉性原則,而抽象工廠設計模式則解決了這個問題。就是把工廠也獨立出來,如上例說到的工廠類既可以建立蘋果又可以建立梨
而抽象工廠就是一個工廠類只負責建立一個產品,因此就產生了單獨的工廠,如蘋果工廠只產生蘋果,梨工廠只生產梨,你添加了新的產品,我就建立新
的工廠類;由於工廠被獨立出來,又擁有共同的特性,所以要提取出來一個介面,所有的工廠都去實現這個介面;這就是抽象工廠設計模式;
程式碼範例如下:
蘋果和梨對象還是上面的對象
我們首先提取工廠類介面
1 /** 2 * 工廠類介面 3 * 4 * @author jiaocg 5 * 6 */ 7 public interface MyFactory { 8 9 public MyProduct createProduct();10 }
蘋果工廠
1 /** 2 * 蘋果工廠 3 * 4 * @author jiaocg 5 * 6 */ 7 public class AppleFactory implements MyFactory { 8 9 @Override10 public MyProduct createProduct() {11 return new Apple();12 }
梨工廠
1 /** 2 * 梨工廠 3 * 4 * @author jiaocg 5 * 6 */ 7 public class PearFactory implements MyFactory { 8 9 @Override10 public MyProduct createProduct() {11 return new Pear();12 }
使用工廠建立對象
1 AppleFactory appleFactory=new AppleFactory();2 // 我想要蘋果3 MyProduct apple = appleFactory.createProduct();4 5 PearFactory pearFactory=new PearFactory();6 // 我想要梨7 MyProduct pear = pearFactory.createProduct();
以上就是簡單的抽象工廠設計模式,如果有新的產品出現,我們只需要去建立一個新的工廠類即可;
Android常用設計模式