亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费

新聞中心

NEWS

當前位置: 首頁(yè) > 產(chǎn)品中心

java工廠(chǎng)模式三種詳解

時(shí)間:2026-05-05 03:08:19

工廠(chǎng)模式是工廠(chǎng)一種創(chuàng )建型設計模式,它提供了一種在不指定具體類(lèi)的模式情況下創(chuàng )建對象的方式,在Java中,種詳工廠(chǎng)模式主要有兩種實(shí)現方式:簡(jiǎn)單工廠(chǎng)(′ω`*)模式(╬ ò﹏ó)和工廠(chǎng)方法ヽ(′ー`)ノ模式,工??廠(chǎng)下面將詳細介紹這兩種工廠(chǎng)模式的模式使用方??法。

1、種詳簡(jiǎn)單工廠(chǎng)模式

簡(jiǎn)單工廠(chǎng)模式又稱(chēng)??為靜態(tài)工廠(chǎng)模式,工廠(chǎng)它是ヾ(′▽?zhuān)??模式一種創(chuàng )建型設計模式,提供了一種在不指定具體類(lèi)的種詳情況下創(chuàng )建對象的方式,在Java(╯‵□′)╯中,工廠(chǎng)簡(jiǎn)單工(gong)廠(chǎng)??模式主要有兩種實(shí)(′?_?`)現方式:靜態(tài)方法和實(shí)例方法。模式

(1)靜態(tài)方法

靜態(tài)方法是??種詳在類(lèi)級別上定義的方法,可以直接通過(guò)類(lèi)名調用,工廠(chǎng)在簡(jiǎn)單工廠(chǎng)模式中,模式我們可以使用靜態(tài)方法來(lái)創(chuàng )建對象,種詳下面是一個(gè)簡(jiǎn)單的例子:

public class SimpleFacto(??-)?ry {  public st??atic Prod??uct createProduct(String type) {  if (&quo(′▽?zhuān)?)t;A".equals(type)) {  return new ConcreteProductA(); } else if ("B".e(???)quals(type)) {  return new ConcreteProductB(); } else {  throw new IllegalArgumentE??xception("Invalid produ?ct type"); } }}

在這個(gè)例子中,我們定義了一個(gè)SimpleFactory類(lèi),它有一個(gè)靜態(tài)方法createProduct,該方法接受一個(gè)字符串參數type,根據type的值創(chuàng )建并返回相應的產(chǎn)品對象,如果傳入的type值無(wú)效,則??拋出異常。

(2)實(shí)例方法

實(shí)例方法是在類(lèi)的實(shí)例上(shang)定義的方法,需(xu)要先創(chuàng )建類(lèi)的實(shí)例才能調用,在簡(jiǎn)單工廠(chǎng)模式中,我們也可以使用實(shí)例方法來(lái)創(chuàng )建對象,下面是一個(gè)簡(jiǎn)單的例子:

public class Simpl(′ω`)eFactory {  public Product createProduct(String type) {  if ("A".equals(type)) {  return new ConcreteProductA(); } else if ("B".equals(type(???))) {  return new ConcreteProductB(); } else {  throw new IllegalArgumentException("Invalid product type"); } }}

在這個(gè)例子中,我們定義了(le)一個(gè)Simp??leFactory類(lèi),它有一個(gè)實(shí)例方法createProduct,該方法接受一個(gè)字符串參數type,根據type的值創(chuàng )建并返回相??應的產(chǎn)品對象,如果傳入的type值無(wú)效,則拋??出異常。

2、工廠(chǎng)方法模式

工廠(chǎng)方法模式是一種創(chuàng )建型設計模式,它提供了一種在不指定具體類(lèi)的情況下創(chuàng )建對象的方式,在Java中,工廠(chǎng)方法模式主要有兩種實(shí)現方式:接口和抽象類(lèi)。

(1)接口

接口是一種特殊的抽象類(lèi)型,它只包含抽象方法和常量,在工廠(chǎng)方法模式中,我們可(ke)以使用接口來(lái)定義產(chǎn)品的創(chuàng )建方法,下面是一個(gè)簡(jiǎn)單的例子:

public interface Product {  void doSomething()(???);}

在這個(gè)例子中,我們定義了一個(gè)Product接口,它有一個(gè)抽象??方法doSomething,接下(xia)來(lái),我們可以為不同的產(chǎn)品實(shí)現這個(gè)接口:

public class ConcreteProductA implements Product {  @Override public vo(′▽?zhuān)?id doSomething((╯°□°)╯︵ ┻━┻) {  System.out.println("ConcreteProd???uctA is doing something"); }}
public class ConcreteProductB implements Product {  @Ov??erride publiヽ(′▽?zhuān)?ノc void doSomething() {  System.(′;ω;`)out.println("ConcreteProductB is doing something"); }}

我們可以創(chuàng )建一個(gè)工廠(chǎng)類(lèi)來(lái)根據接口創(chuàng )建產(chǎn)品對象:

public class Factory {  public static Product createProduct(String type) {  if ("A".equals(type)) {  retu??rn new ConcreteProductA(); } else if ("B"ヾ(^-^)ノ;.equals??(ty??pe)) {  return new ConcreteProductB(); } else {  throw new Il(′▽?zhuān)?legalA??rgumentException("Invalid product type"); } }}

在這個(gè)例子中,我們定義了一個(gè)Factory類(lèi),它有一個(gè)靜態(tài)方法createProduct,該方法接受一個(gè)字符串參數type,根據type的值創(chuàng )建并返回相應的產(chǎn)品對象,如果傳入的t??ype值無(wú)(wu)效,則拋出異常。

(2)抽象類(lèi)

抽象類(lèi)是一種特殊的類(lèi),它不能被實(shí)例化,只能被繼承,在工廠(chǎng)方法模式中,我們可以使用抽象類(lèi)來(lái)定義產(chǎn)品的創(chuàng )建方法,下面是一個(gè)簡(jiǎn)單的例子:

public abstract class AbstractProduct {  abstrac(′▽?zhuān)?t void doSomething();}

在這個(gè)例子中,我們定義了一個(gè)抽象類(lèi)Ab(′ω`)stractProduct,它有一個(gè)抽象方法doSomething,接下來(lái),我們可以為不同的產(chǎn)品繼承這個(gè)抽象類(lèi):

public class ConcreteProductA extends AbstractProduct {  @Override public void doSo??mething() {  System.out.println("ConcreteProductA is doin??g something"); }}
public class ConcreteProductB extends AbstractProduct {  @Override public void doSomething() {  System.out.println("ConcreteProductB is doing something"); }}
亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费 江西省| 慈溪市| 封丘县| 怀宁县| 收藏| 广宁县| 松原市| 个旧市| 南安市| 阳原县| 丰都县| 迁西县| 安仁县| 琼中| 苍南县| 郁南县| 英吉沙县| 双辽市| 天门市| 琼结县| 元氏县| 青冈县| 鹰潭市| 清远市| 芒康县| 芦山县| 黎平县| 通海县| 宝兴县| 商城县| 连江县| 尤溪县| 侯马市| 新乐市| 玉树县| 田东县| 松阳县| 板桥市| 清远市| 延吉市| 宜兰市| http://444 http://444 http://444 http://444 http://444 http://444