1、简单工厂模式
//工厂类
public
class
Factory {
public
Product createProduct(String
type
){
if
(
type
==
"A"
){
return
new
ProductA();
}
else
if
(
type
==
"B"
){
return
new
ProductB();
}
return
null
;
}
}
//产品接口
public
interface
Product {
public
void
func();
}
//产品类A
public
class
ProductA
implements
Product{
public
void
func(){
System.
out
.println(
"ProductA"
);
}
}
//产品类B
public
class
ProductB
implements
Product{
public
ProductB(){
}
public
void
func(){
System.
out
.println(
"ProductB"
);
}
}
客户端
Factory f
=
new
Factory();
Product pa
=
f
.createProduct("A");
Pa
.func();
Product pb
=
f
.createProduct("B");
Pa
.func();
2、工厂方法模式
//工厂类接口
public
interface
Factory {
public
Product createProduct ();
}
//工厂类A
public
class
FactoryA
implements
Factory{
public
Product createProduct(){
return
new
ProductA();
}
}
//工厂类B
public
class
FactoryB
implements
Factory{
public
Product createProduct(){
return
new
ProductB();
}
}
/
//产品基类
public
class
Product {
public
void
func(){
System.
out
.println(
"product"
);
}
}
//产品类A
public
class
ProductA
extends
Product{
public
void
func(){
System.
out
.println(
"ProductA"
);
}
}
//产品类B
public
class
ProductB
extends
Product{
public
void
func(){
System.
out
.println(
"ProductB"
);
}
}
/
//客户端
public
class
main {
public
static
void
main(String[]
args
){
Factory
Fa
=
new
FactoryA();
Product
Pa
=
Fa
.createProduct();
Pa
.func();
Factory
Fb
=
new
FactoryB();
Product
Pb
=
Fb
.createProduct();
Pb
.func();
}
}
3、抽象工厂方法模式
产品A
//鼠标接口
public
interface
IMouse {
public
void
func();
}
//mac鼠标
public
class
MacMouse
implements
IMouse{
public
void
func(){
System.
out
.println(
"MacMouse"
);
}
}
//lenovo鼠标
public
class
LenovoMouse
implements
IMouse{
public
void
func(){
System.
out
.println(
"lenovoMouse"
);
}
}
产品B
/
//键盘接口
public
interface
IKeyboard {
public
void
func();
}
//mac键盘
public
class
MacKeyboard
implements
IKeyboard{
public
void
func(){
System.
out
.println(
"MacKeyboard"
);
}
}
//lenovo键盘
public
class
LenovoKeyboard
implements
IKeyboard{
public
void
func(){
System.
out
.println(
"LenovoKeyboard"
);
}
}
工厂类
//工厂接口
public
interface
IFactory {
public
IKeyboard CreateKeyboard ();
public
IMouse CreateMouse();
}
//Mac工厂
public
class
MacFactory
implements
IFactory{
public
IKeyboard CreateKeyboard(){
return
new
MacKeyboard();
}
public
IMouse CreateMouse(){
return
new
MacMouse();
}
}
//Lenovo工厂
public
class
LenovoFactory
implements
IFactory{
public
IKeyboard CreateKeyboard(){
return
new
LenovoKeyboard();
}
public
IMouse CreateMouse (){
return
new
LenovoMouse();
}
}
客户端
public
class
main {
public
static
void
main(String[]
args
){
IFactory
factory
=
new
MacFactory();
IMouse
mouse
=
factory
.CreateMouse();
mouse
.func();
IKeyboard
keyboard
=
factory
.CreateKeyboard();
keyboard
.func();
factory
=
new
LenovoFactory();
mouse
=
factory
.CreateMouse();
mouse
.func();
keyboard
=
factory
.CreateKeyboard();
keyboard
.func();
}
}
输出
/
MacMouse
MacKeyboard
lenovoMouse
LenovoKeyboard