1. 程式人生 > >抽象工廠模式簡單例項

抽象工廠模式簡單例項

抽象工廠模式

是所有形式的工廠模式中最為抽象和最具有一般性的一種形態,抽象工廠模式提供一個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類

抽象工廠模式結構圖:

抽象工廠模式之資料庫操作工廠

抽象工廠類:
package AbstractFactory;

import AbstractProduct.Connection;
import AbstractProduct.Statement;

public interface DBFactory {
    public Connection createConnection();
    public Statement createStatement();
  
}
具體工廠類1:
package ConcreteFactory;

import AbstractFactory.DBFactory;
import AbstractProduct.Connection;
import AbstractProduct.Statement;
import ConcreteProduct.MysqlConnection;
import ConcreteProduct.MysqlStatement;

public class MysqlFactory implements DBFactory {

	@Override
	public Connection createConnection() {
		return new MysqlConnection();
		
	}
	
	@Override
	public Statement createStatement() {
		return new MysqlStatement();	
	}
}
具體工廠類2:
package ConcreteFactory;

import AbstractFactory.DBFactory;
import AbstractProduct.Connection;
import AbstractProduct.Statement;
import ConcreteProduct.OracleConnection;
import ConcreteProduct.OracleStatement;

public class OracleFactory implements DBFactory {

	@Override
	public Connection createConnection() {
		return new OracleConnection();	
	}

	@Override
	public Statement createStatement() {
		return new OracleStatement();	
	}
}
抽象產品類A:
package AbstractProduct;

public interface Connection {
     public void connect();
}
抽象產品類B:
package AbstractProduct;

public interface Statement {
     public void executeStatement();
}
具體產品類A1:
package ConcreteProduct;

import AbstractProduct.Connection;

public class MysqlConnection implements Connection {

	@Override
	public void connect() {
		// TODO Auto-generated method stub
		System.out.println("連線mysql資料庫");
	}

}
具體產品類A2:
package ConcreteProduct;

import AbstractProduct.Statement;

public class MysqlStatement implements Statement {

	@Override
	public void executeStatement() {
		System.out.println("執行Mysql資料庫語句");
	}

}
具體產品類B1:
package ConcreteProduct;

import AbstractProduct.Connection;

public class OracleConnection implements Connection {

	@Override
	public void connect() {
		// TODO Auto-generated method stub
		System.out.println("連線oracle資料庫");
	}

}
具體產品類B2:
package ConcreteProduct;

import AbstractProduct.Statement;

public class OracleStatement implements Statement {

	@Override
	public void executeStatement() {
		System.out.println("執行oracle資料庫語句");
	}

}
測試類:
package Test;

import AbstractFactory.DBFactory;
import AbstractProduct.Connection;
import AbstractProduct.Statement;
import ConcreteFactory.OracleFactory;

public class test {
	public static void main(String args[]){
		DBFactory factory;
		Connection connection;
		Statement statement;
		factory=new OracleFactory();
		connection=factory.createConnection();
		statement=factory.createStatement();
		connection.connect();
		statement.executeStatement();
	}

}
抽象工廠模式:
測試結果圖:


抽象工廠模式優點:
1:抽象工廠模式隔離了類的生產,客戶不需要知道什麼唄建立
2:當一個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的物件。
3:增加新的具體工廠和產品族很方便,無須修改已有系統,符合“開閉原則”。
缺點:增加新的產品等級結構很複雜,需要修改抽象工廠和所有的具體工廠類,對“開閉原則”的支援呈現傾斜性。




相關推薦

抽象工廠模式簡單例項

抽象工廠模式 是所有形式的工廠模式中最為抽象和最具有一般性的一種形態,抽象工廠模式提供一個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類 抽象工廠模式結構圖: 抽象工廠模式之資料庫操作工廠 抽象工廠類:package AbstractFactory; imp

java常用設計模式--抽象工廠模式簡單例子

package com.ruanyun;/** * @Auther: maxw * @Date: 2018/11/12 11:23 * @Description:抽象工廠模式:與工廠方法模式不同的是,工廠方法模式中的工廠只生產單一的產品,而抽象工廠模式中的工廠生產多個產品。 * 還有個抽象工廠方法模式 只需要

工廠方法模式抽象工廠模式簡單例項分析

為了更好地理解這兩個模式,自己假設了如下場景,可能有些牽強,但應該還好。嘿嘿。 Acer,Lenovo兩家本本製造商,假設原來有一OEM兩個牌子的本本都做,這時,無論你想買那種牌子的,都可以直接向OEM購買。 可是後來該OEM商發現,如果一次同時做很多個牌子的本本,

Note8:C#設計模式工廠方法模式(VS 簡單工廠模式 & 抽象工廠模式

工廠方法模式 blog 抽象工廠 nbsp strong str cnblogs note 設計 一、資源說明 (1)本文有參考:http://www.cnblogs.com/zhili/p/FactoryMethod.html 待更!Note8:C#設計模式—工廠方法

iOS經常使用設計模式——工廠方法(簡單工廠模式工廠方法模式抽象工廠模式

csdn bst 設計 cto mod 基類 load 引用 角色 1. 簡單工廠模式 怎樣理解簡單工廠,工廠方法。 抽象工廠三種設計模式? 簡單工廠的生活場景。賣早點的小攤販。他給你提供包子,饅頭,地溝油烙的煎餅等,小販是一個工廠。它生產包子,饅頭,地溝油烙的

【JS設計模式】溫習簡單工廠模式工廠方法模式抽象工廠模式概念

his mac script 開頭 str new 每一個 簡單工廠 pattern 註:空心箭頭表示的是種繼承關系,工廠類和產品類之間是一種依賴關系。是用箭頭加虛線表示的,以下的模型圖是用的實線是不正確(時間不夠用,在這裏我偷懶了。這個習慣不好,呵呵)簡單工廠模式(S

一(3)抽象工廠模式&&簡單工廠+反射改進抽象工廠

reat end ssi 一行代碼 rate imp 缺點 接口 ner 1 抽象工廠?   抽象工廠用在既有產品樹,又有產品族的場合。     產品樹:奔馳旗下的跑車和商務車構成產品樹    產品族:奔馳旗下的跑車與奧迪旗下的跑車構成產品族。/*缺點:此時如果需要增加一個

簡單工廠模式工廠模式抽象工廠模式

alt 缺陷 關心 display img ret blog readline == 1.簡單工廠模式:調用類只需要向工廠類請求方法,由工廠決定創建出哪個類的實例,而不需要關心被調用類的實現過程。 優勢:調用類 和 被調用類分離,調用類需要時只需要向工廠請求,避免了調用類

設計模式——抽象工廠簡單工廠工廠方法

load create The 判斷 console 名稱 簡單 類名 參數 簡單工廠:根據外來參數判斷創建的實例。一般使用 If 或者 switch。 工廠方法:項目中只有一個抽像類,只建造一個工廠就可以完成項目。 抽象工廠:項目中不止一個抽象類,需要為每一個類建造一座工

【設計模式簡單工廠模式 |工廠方法模式 |抽象工廠模式

簡單工廠模式 由三種角色組成: 1、工廠類角色:是簡單工廠模式的核心,含有一定的商業邏輯和判斷邏輯。 2、抽象產品角色:一般是具體產品繼承的父類或者實現的介面。 3、具體產品角色:工廠類所建立的物件就是此角色的例項。 用一個單獨的類來做這個創在例項的過程,這就

簡單工廠模式工廠模式抽象工廠模式區別

下面例子中滑鼠,鍵盤,耳麥為產品,惠普,戴爾為工廠。 簡單工廠模式(面向單個產品,不符合開閉原則,要點:產品面向介面) 簡單工廠模式不是 23 種裡的一種,簡而言之,就是有一個專門生產某個產品的類。 比如下圖中的滑鼠工廠,專業生產滑鼠,給引數 0,生產戴爾滑鼠,給引數

抽象工廠模式(Abstract Factory Pattern):簡單&粗暴解析

1.前言 在之前的文章設計模式(Design pattern):簡單&粗暴解析中已經為大家深入淺出解析了 設計模式 的 七大原則、三大型別。 本文為大家解析三大型別中 建立型 裡其中的 抽象工廠模式。 文章中例項  linhaojian的Git

總結工廠模式---簡單工廠工廠方法、抽象工廠

ati tac 自己的 object 獲得 抽象工廠 nbsp art 工廠類 簡單工廠 首先,我們先看一個簡單工廠的例子: #coding=utf-8 class Mercedes(object): """梅賽德斯 """ def __repr_

C++設計模式-繼承與多型影響耦合性(最基礎的簡單工廠模式例項

繼承與多型影響耦合性(最基礎的簡單工廠模式小例項) 原理: 通過繼承和虛擬函式的方式修改某個子類對應函式的功能; 通過簡單工廠模式到底例項化誰; 如果要增加複雜的運算只有增加響應的子類,以及工廠的分支即可;   程式執行截圖如下:   目錄結構如

工廠模式簡單工廠模式抽象工廠模式

說到這幾個工廠模式有很多相似之處又有不同。最重要的是掌握這種思想,在以後搭建專案架構或寫一些功能,應用這些思想,讓自己的程式更健壯,或者說當你看到別人寫的程式應用到了這種思想能夠快速理解。話不多說,咱們先從入門級的小案例講起。 一.簡單工廠模式 基本概念:簡單工廠模式是由一個工廠類根據接受到的訊息決定要建

設計模式學習 ——簡單工廠模式工廠模式抽象工廠模式

【轉】設計模式學習(二)——簡單工廠模式、工廠模式、抽象工廠模式 最近抽時間將之前看過的“程式人生”公眾號推送的一篇工廠模式的介紹進行了實踐,為了加深自己理解,特將自己的學習理解記錄於此。初識設計模式,就被設計模式的精妙深深吸引,感覺脫離設計模式的程式碼就失去了美麗。作為一個測試,平日寫程式碼的機會肯定不如開

簡單工廠模式 工廠方法模式 抽象工廠模式 最顯著的區別

1,簡單工廠模式:一個工廠生產一類產品,通過傳入引數,區分不同型號。這種模式的缺點是當新增新型號產品的時候,需要改動工廠程式碼。 2,工廠方法模式:一個工廠生產一種型號的產品,通過建立多個工廠,完成同一類產品不同型號的生產。這種模式的缺點是當需要新增新的產品組的時候,需要改動工廠程式碼。 3

Java設計模式-簡單工廠模式/工廠模式/抽象工廠模式

目錄 簡單工廠模式 工廠模式 抽象工廠模式 上述程式碼 GitHub 地址:https://github.com/baicun/designPatterns 共同點:建立一個類,對同樣操作的方法介面進行封裝,類似工廠管理生產線等情形。 優點:方便管理,易於拓展。 應用

建立型模式-工廠相關模式 詳解設計模式工廠模式(簡單工廠+工廠方法+抽象工廠)

  這裡我們來說一下簡單工廠,工廠方法,抽象工廠   可以看這篇文章:詳解設計模式之工廠模式(簡單工廠+工廠方法+抽象工廠)   簡單工廠   先說說簡單工廠,簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一   看程

設計模式學習總結(1)簡單工廠模式工廠方法模式抽象工廠模式

設計模式學習 做了幾個專案,發現設計模式的好處還是很多的,這東西就是隻有你真正用到的時候才知道他的好處,否則學了也不知道所以然。所以設計模式學習我認為可以在先進行幾個專案後,再來學習,這樣學習的效果和感受才是最好的。 這次是做一個學習的筆記,內容還是主要以我看的兩本書《大