工廠方法模式分為三種:
成都創新互聯專注于伊吾網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供伊吾營銷型網站建設,伊吾網站制作、伊吾網頁設計、伊吾網站官網定制、微信小程序開發服務,打造伊吾網絡公司原創品牌,更為您提供伊吾網站排名全網營銷落地服務。
1、普通工廠模式,就是建立一個工廠類,對實現了同一接口的一些類進行實例的創建
2、多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字符串出錯,則不能正確創建對象,而多個工廠方法模式是提供多個工廠方法,分別創建對象。
3、靜態工廠方法模式,將上面的多個工廠方法模式里的方法置為靜態的,不需要創建實例,直接調用即可。
具體代碼請參考:java設計模式? ?第三大節
如果對您有幫助,請及時采納謝謝
工廠模式java實例如下:
public interface Work {
void doWork();
}
ConcreteProduct
public class StudentWork implements Work {
public void doWork() {
? ?System.out.println("學生做作業!");
}
}
public class TeacherWork implements Work {
public void doWork() {
? ?System.out.println("老師審批作業!");
}
}
生產者
public interface IWorkFactory {
Work getWork();
}
ConcreteCreator
public class StudentWorkFactory implements IWorkFactory {
public Work getWork() {
? ?return new StudentWork();
}
}
public class TeacherWorkFactory implements IWorkFactory {
public Work getWork() {
? ?return new TeacherWork();
}
}
Test
public class Test {
public static void main(String[] args) {
? ?IWorkFactory studentWorkFactory = new StudentWorkFactory();
? ?studentWorkFactory.getWork().doWork();
? ?
? ?IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
? ?teacherWorkFactory.getWork().doWork();
}
}
字符串反轉如下:
public String getReverseStr(String str)
{
String reverseStr = "";
if (null != str !str.equals(""))
{
? for (int i = 1 ; i =str.length(); i++){
? ? ? ??reverseStr += str.charAt(str.length() - i);
? ? ? ? // 依次按與原字符串相反的順序拼裝字符串,內部會自動進行類型轉換
? ? ? ? //str.length() - i剛好是str的下標,因為i是從1開始
? }
}
return reverseStr;
}
冒泡排序算法,從小到大
public int[] sortArr(int[] targetArr){
? ? ?//小到大的排序
? ? ? ?int temp = 0;
? ? ? ?for(int i = 0;itargetArr.length;i++){
? ? ? ? ? ?for(int j = i;jtargetArr.length;j++){
? ? ? ? ? ? ? ?if(targetArr[i]targetArr[j]){
? ? ? ? ? ? ? ? ? ?temp = targetArr[i];
? ? ? ? ? ? ? ? ? ?targetArr[i] = targetArr[j];
? ? ? ? ? ? ? ? ? ?targetArr[j] = temp;
? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ?}
? ? return?targetArr;
}
Java工廠模式可分為三種:
1.靜態工廠模式
2.工廠方法模式
3.抽象工廠模式
一、靜態工廠模式:用靜態的方法實現,其創建的對象具有一定的特性
舉例如下:
Vehicle類:
public abstract class Vehicle
{
private String name;
public Vehicle (){
super();
}
public Vehicle (String name){
super();
this.name=name;
}
public abstract void run();
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}
Bus類:
public class Bus extends Vehicle
{
private String name;
public Bus(){}
public Bus(String name){
super(name);
}
@Override
public abstract void run(){
System.out.println("Bus is running");
}
}
Car類:
public class Car extends Vehicle
{
private String name;
public Car(){}
public Car(String name){
super(name);
}
@Override
public abstract void run(){
System.out.println("Car is running");
}
}
靜態工廠類:
(靜態工廠創建一個對象,
靜態工廠創建的對象一般都有一個共同的特性,
繼承自某一個類,
或者引用一個接口)
public class StaticFactory{
public static Object getInstance(String className){
Object instance=null;
try{
Class c=Class.forName(className);
instance=c.newInstance();
}catch(Exception e){}
return instance;
}
public static Object getInstance(String className,Object ...args){
Class c=null;
try{
c=Class.forName(className);
}catch(Exception e){}
Constructor[] cons=c.getConstructors();
Object instance=null;
for(Constructor con:cons){
Class?[] cs=con.getParmeterTypes();
if(cs.length0){
boolean isConstructor=true;
for(int i=0;ics.length;i++){
Class t=cs[i];
if(!t.isInstance(args[i])){
isConstructor=false;
}
}
if(isConstructor){
try{
instance=con.newInstance(args);
break;
}catch(Exception e){}
}else{
continue;
}
}
}
return instance;
}
}
二、工廠方法模式:主要是對各類東西分類生產,但分類生產的對象仍然具有某一特性。
如果說靜態工廠是一個綜合的交通工具建造工廠,
那么工廠方法模式就是具體分工,分成Bus與Car的工廠,
各自生產各自的產品,但是造出來的還是交通工具。
交通工具制造接口:
public interface VehicleMake{
/**制造交通工具**/
public Vehicle make();
}
Bus制造類:
public class BusMake implements VehicleMake{
@Override
public Vehicle make(){
Vehicle bus=new Bus();
System.out.println("Bus工廠制造了一輛Bus");
return bus;
}
}
Car制造類:
public class CarMake implements VehicleMake{
@Override
public Vehicle make(){
Vehicle car=new Car();
System.out.println("Car工廠制造了一輛Car");
return car;
}
}
三、抽象工廠模式:抽象工廠生產的對象可能是沒有共同特性的。比如,一個制造工廠BusMake不僅能制造Bus還能生產輪胎wheel等配件,Bus是交通工具,wheel是配件(代碼中有部分類沒具體寫出來只給了類名)
總工廠(抽象工廠總接口):
public interface WheelVehicleMake extends VehicleMake{
/**制造輪胎**/
public Wheel makeWheel();
}
輪子BusMake:
public class WheelBusMake implements WheelVehicleMake{
@Override
public Vehicle make(){
Vehicle bus=new Bus();
System.out.println("WheelBusMake生產了一輛Bus");
return bus;
}
@Override
public Wheel makeWheel(){
Wheel busWheel=new BusWheel();
System.out.println("WheelBusMake生產了一個Bus輪子");
return busWheel;
}
}
輪子CarMake:
public class WheelCarMake implements WheelVehicleMake{
@Override
public Vehicle make(){
Vehicle car=new Car();
System.out.println("WheelCarMake生產了一輛Car");
return car;
}
@Override
public Wheel makeWheel(){
Wheel carWheel=new CarWheel();
System.out.println("WheelCarMake生產了一個Car輪子");
return carWheel;
}
}
工廠模式 就是用對象不要自己new 了,要先創建其對象的工廠,DateFormat就是,getDateInstance是得到該對象的一個實例(就是得到你想要的對象),然后就可以繼續使用對象的方法做事了
這個應該比較簡單一點。
某系統日志記錄器要求支持多種日志記錄方式,如文件記錄、數據庫記錄等,且用戶可以根據要求動態選擇日志記錄方式。現使用工廠方法模式設計該系統,并寫出相應Java代碼。
interface Log{
public void writeLog();
}
class FileLog implements Log{
public void writeLog(){
System.out.println("文件記錄");
}
}
class DatabaseLog implements Log{
public void writeLog(){
System.out.println("數據庫記錄");
}
}
interface LogFactory{
public Log createLog();
}
class FileLogFactory implements LogFactory{
public Log createLog(){
return new FileLog();
}
}
class DatabaseLogFactory implements LogFactory{
public Log createLog(){
return new DatabaseLog();
}
}
public class Client{
public static void main(String[] args) {
try{
Log log;
LogFactory factory;
//這里可以改成使用DOM和Java反射機制讀取XML文件,獲取工廠類名
factory=new DatabaseLogFactory ();
log=factory.createLog();
log.writeLog();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}
分享標題:java簡單工廠模式代碼 java簡單工廠模式及代碼
地址分享:http://m.kartarina.com/article32/hjigpc.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、網站營銷、網頁設計公司、電子商務、網站策劃、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯