国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例

Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例

2020-04-18 12:16匆忙擁擠repeat JAVA教程

這篇文章主要介紹了Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例,簡(jiǎn)單工廠與抽象工廠都可以歸類于設(shè)計(jì)模式中的創(chuàng)建型模式,需要的朋友可以參考下

簡(jiǎn)單工廠模式
類圖

Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例

通過一個(gè)工廠類,以一個(gè)條件來創(chuàng)建對(duì)應(yīng)的對(duì)象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//業(yè)務(wù)功能
public interface ICalculation {
  double getResult(double numA, double numB);
}
 
public class CalcAdd implements ICalculation {
 
  @Override
  public double getResult(double numA, double numB) {
    System.out.println("加法");
    return numA + numB;
  }
 
}
 
public class CalcSubtract implements ICalculation {
 
  @Override
  public double getResult(double numA, double numB) {
    System.out.println("減法");
    return numA - numB;
  }
 
}
 
/*
 * 簡(jiǎn)單工廠模式 關(guān)注:對(duì)象的創(chuàng)建
 * 建立一個(gè)工廠類,對(duì)實(shí)現(xiàn)了同一接口的或者是存在繼承關(guān)系的一些類進(jìn)行實(shí)例的創(chuàng)建
 */
public class Test4Simple {
  public static void main(String[] args) {
//   String operation = "/";
    String operation = "+";
//   String operation = "-";
//   String operation = "*";
    double numA = 182, numB = 33;
    ICalculation createCalc = CalcSimpleFactory.createCalc(operation);
    double result = createCalc.getResult(numA, numB);
    System.out.println(result);
  }
}

簡(jiǎn)單工廠的缺陷: 簡(jiǎn)單工廠創(chuàng)建產(chǎn)品時(shí)需要傳遞相應(yīng)的參數(shù),如果傳遞不正確就取不到對(duì)象了。
改進(jìn):多方法創(chuàng)建不同產(chǎn)品
類圖

Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class CalcMultipleFactory {
   
  public static ICalculation produceAdd() {
    return new CalcAdd();
  }
   
  public static ICalculation produceSubtract() {
    return new CalcSubtract();
  }
   
  public static ICalculation produceMultiply() {
    return new CalcMultiply();
  }
   
  public static ICalculation produceDivide() {
    return new CalcDivide();
  }
}
 
public class Test4Multiple {
 
  public static void main(String[] args) {
    double numA = 182, numB = 33;
     
    ICalculation createCalc = CalcMultipleFactory.produceAdd();
    double result = createCalc.getResult(numA, numB);
    System.out.println(result);
     
    createCalc = CalcMultipleFactory.produceSubtract();
    result = createCalc.getResult(numA, numB);
    System.out.println(result);
     
    createCalc = CalcMultipleFactory.produceMultiply();
    result = createCalc.getResult(numA, numB);
    System.out.println(result);
     
    createCalc = CalcMultipleFactory.produceDivide();
    result = createCalc.getResult(numA, numB);
    System.out.println(result);
  }
}

抽象工廠模式
里面有幾個(gè)概念:抽象工廠、實(shí)體工廠、抽象產(chǎn)品、實(shí)體產(chǎn)品
抽象工廠:定義創(chuàng)建產(chǎn)品的抽象方法
實(shí)體工廠:具體的創(chuàng)建哪種產(chǎn)品
抽象產(chǎn)品:一個(gè)接口或基類
實(shí)體產(chǎn)品:實(shí)現(xiàn)具體功能,或派生
類圖

Java設(shè)計(jì)模式編程中簡(jiǎn)單工廠與抽象工廠模式的使用實(shí)例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//抽象產(chǎn)品1
public interface IProduct1 {
  public void show();
}
 
//抽象產(chǎn)品2
public interface IProduct2 {
  public void show();
}
 
//實(shí)體產(chǎn)品1
public class Product1 implements IProduct1 { 
  public void show() { 
    System.out.println("創(chuàng)建了1型產(chǎn)品"); 
  
 
//實(shí)體產(chǎn)品2
public class Product2 implements IProduct2 {
  public void show() {
    System.out.println("創(chuàng)建了2型產(chǎn)品");
  }
}
 
/*
 * 1A 1B屬于Product1 同一產(chǎn)品等級(jí)結(jié)構(gòu)中
 * 2A 2B屬于Product2
 */
public class GradeProduct1A extends Product1 {
 
  @Override
  public void show() {
    super.show();
    System.out.println("這是產(chǎn)品1下的:產(chǎn)品A");
  }
   
}
 
public class GradeProduct1B extends Product1 {
 
  @Override
  public void show() {
    super.show();
    System.out.println("這是產(chǎn)品1下的:產(chǎn)品B");
  }
}
 
public class GradeProduct2A extends Product2 {
 
  @Override
  public void show() {
    super.show();
    System.out.println("這是產(chǎn)品2下的:產(chǎn)品A");
  }
}
 
public class GradeProduct2B extends Product2 {
 
  @Override
  public void show() {
    super.show();
    System.out.println("這是產(chǎn)品2下的:產(chǎn)品B");
  }
}
 
//抽象工廠 創(chuàng)建不同的抽象產(chǎn)品
public interface IFactory {
  public IProduct1 createProduct1A();//1類產(chǎn)品 型號(hào)A
  public IProduct1 createProduct1B();//1類產(chǎn)品 型號(hào)B
  public IProduct2 createProduct2A();//2類產(chǎn)品 型號(hào)A
  public IProduct2 createProduct2B();//2類產(chǎn)品 型號(hào)B
}
 
//實(shí)體工廠 創(chuàng)建實(shí)體產(chǎn)品,返回類型為抽象產(chǎn)品
public class Factory implements IFactory {
 
  public IProduct1 createProduct1A() {
    return new GradeProduct1A();
  }
 
  public IProduct1 createProduct1B() {
    return new GradeProduct1B();
  }
 
  public IProduct2 createProduct2A() {
    return new GradeProduct2A();
  }
 
  public IProduct2 createProduct2B() {
    return new GradeProduct2B();
  }
}
 
/*
 * 抽象工廠模式:用來創(chuàng)建一組相關(guān)或者相互依賴的對(duì)象
 *
 * 流程:抽象工廠,實(shí)體工廠   生產(chǎn)產(chǎn)品
 *   抽象產(chǎn)品,實(shí)體產(chǎn)品    實(shí)現(xiàn)產(chǎn)品功能
 * 缺點(diǎn):當(dāng)需要增加一個(gè)產(chǎn)品(由抽象和實(shí)體構(gòu)成),工廠都需要更改
 */
public class Test4Abstract {
  public static void main(String[] args) {
    IFactory factory = new Factory();
    IProduct1 product1a = factory.createProduct1A();
    product1a.show();
    IProduct1 product1b = factory.createProduct1B();
    product1b.show();
     
    IProduct2 product2a = factory.createProduct2A();
    product2a.show();
    IProduct2 product2b = factory.createProduct2B();
    product2b.show();
  }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕高清视频 | 亚洲欧美一级久久精品国产特黄 | 国产免费爽爽视频在线观看 | 国产视频中文字幕 | 亚洲久久 | 欧美1区| 中文字幕一区二区三区日韩精品 | 国产精品久久久久久 | 日韩欧美大片在线观看 | 欧美精品一区二区三区四区在线 | 91精品国产91久久综合桃花 | 中国妞xxx| 国产精品视频导航 | 在线看一区 | 午夜精品久久久久久久久 | 亚洲视频在线免费观看 | 久久h | 国产欧美一区二区三区在线看 | 狠狠操狠狠干 | 欧美一区在线看 | 草比网站| 亚洲人成网站在e线播放 | 久久av综合| 3d动漫精品一区二区三区 | 欧美激情一区二区三区 | 欧美精品久久久 | 成人国产精品久久 | 色婷婷综合久色 | 99久久精品一区二区成人 | 涩涩久久 | 国产精品尤物麻豆一区二区三区 | 二区三区在线 | 亚洲精品国产setv | 欧美国产日韩在线 | 国产精品成人一区二区三区 | 亚洲综合婷婷 | 三区影院| 亚洲一区在线日韩在线深爱 | 成人在线小视频 | 自拍偷拍亚洲 | 欧美一区二区精品 |