1.3.1.4.1 抽象工廠:Gardener.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:Gardener.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 22:55:23
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 抽象工廠角色:工廠接口
*/
public interface Gardener {
public Fruit createFruit(String name);
1.3.1.4.2 抽象水果產品:Fruit.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:Fruit.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 22:54:15
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 抽象產品角色:水果接口
*/
public interface Fruit {
}
1.3.1.4.3 抽象蔬菜產品:Veggie.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:Veggie.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 22:56:22
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 抽象產品角色:蔬菜接口
*/
public interface Veggie {
}
1.3.1.4.4 熱帶水果:TropicalFruit.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:TropicalFruit.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 22:57:08
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 具體產品角色:熱帶水果
*/
public class TropicalFruit implements Fruit {
private String name;
}
1.3.1.4.5 熱帶蔬菜:TropicalVeggie.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:TropicalVeggie.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 22:58:03
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 具體產品角色:熱帶蔬菜
*/
public class TropicalVeggie implements Veggie {
private String name;
public TropicalVeggie(String name) {
System.out.println("熱帶工廠為您創建了:熱帶水果-"+name);
}
}
1.3.1.4.6 亞熱帶水果:NorthernFruit.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:NorthernFruit.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 22:58:55
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 具體產品角色:亞熱帶水果
*/
public class NorthernFruit implements Fruit {
private String name;
public NorthernFruit(String name) {
System.out.println("亞熱帶工廠為您創建了:亞熱帶水果-"+name);
}
}
1.3.1.4.7 亞熱帶蔬菜:NorthernVeggie.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:NorthernVeggie.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 22:59:36
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 具體產品角色:亞熱帶蔬菜
*/
public class NorthernVeggie implements Veggie {
private String name;
public NorthernVeggie(String name) {
System.out.println("亞熱帶工廠為您創建了:亞熱帶蔬菜-"+name);
}
}
1.3.1.4.8 熱帶工廠:TropicalGardener.java
/**
* Created by IntelliJ IDEA.
* FileName:TropicalGardener.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 23:01:49
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 具體工廠角色:熱帶工廠
*/
public class TropicalGardener implements Gardener {
public Fruit createFruit(String name) {
return new TropicalFruit(name);
}
public Veggie createVeggie(String name) {
return new TropicalVeggie(name);
}
}
1.3.1.4.9 亞熱帶工廠:NorthernGardener.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:NorthernGardener.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 23:00:31
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 具體工廠角色:亞熱帶工廠
*/
public class NorthernGardener implements Gardener {
public Fruit createFruit(String name) {
return new NorthernFruit(name);
}
public Veggie createVeggie(String name) {
return new NorthernVeggie(name);
}
}
1.3.1.4.10 測試類(客戶端):TestApp.java
package com.lavasoft.patterns.abstractfactory.ybms;
/**
* Created by IntelliJ IDEA.
* FileName:TestApp.java
* User: LavaSoft
* Date: 2006-12-5
* Time: 23:03:22
* 《Java與模式》(--閻宏博士著)讀書筆記
* 工廠模式--抽象工廠模式--一般性模式(農場應用)
* ReadMe: 測試類(客戶端)
*/
public class TestApp {
private void test(){
Veggie tv,nv;
Fruit tf,nf;
TropicalGardener tg=new TropicalGardener();
NorthernGardener ng=new NorthernGardener();
tv=tg.createVeggie("熱帶菜葉");
nv=ng.createVeggie("東北甜菜");
tf=tg.createFruit("海南椰子");
nf=ng.createFruit("雪梨");
}
public static void main(String args[]){
TestApp test=new TestApp();
test.test();
}
}
1.3.1.4.11 測試運行結果
熱帶工廠為您創建了:熱帶水果-熱帶菜葉
亞熱帶工廠為您創建了:亞熱帶蔬菜-東北甜菜
熱帶工廠為您創建了:熱帶水果-海南椰子
亞熱帶工廠為您創建了:亞熱帶水果-雪梨
Process finished with exit code 0
看完設計圖和源碼,原理已經很清楚了,這個模式應用很靈活,猴交給你了,看你怎么玩它!哈哈哈哈。。。。
1.3.1.5 女媧舉繩造萬物
女媧舉繩造物的故事很適合在這里舉例子,女媧的繩子按照陰陽劃分,產品則按人、獸劃分。將抽象工廠模式用于女媧造萬物的模擬系統設計中。系統設計圖如下: