package
com
.
lee
.
first1200
;
public
interface
Car
{
public
void
sayName
()
;
}
package
com
.
lee
.
first1200
;
public
class
AudiCar
implements
Car
{
@Override
public
void
sayName
()
{
System
.
out
.
println
(
"Audi"
)
;
}
}
package
com
.
lee
.
first1200
;
public
class
BenzCar
implements
Car
{
@Override
public
void
sayName
()
{
System
.
out
.
println
(
"Benz"
)
;
}
}
package
com
.
lee
.
first1200
;
public
enum
CarFactory
{
BENZ
{
@Override
public
Car
create
()
{
// TODO Auto-generated method stub
return
new
BenzCar
()
;
}
}
,
AUDI
{
@Override
public
Car
create
()
{
// TODO Auto-generated method stub
return
new
AudiCar
()
;
}
}
,
BMW
{
@Override
public
Car
create
()
{
// TODO Auto-generated method stub
return
new
BmwCar
()
;
}
}
;
public
abstract
Car
create
()
;
}
package
com
.
lee
.
first1200
;
public
class
CarMain
{
public
static
void
main
(
String
[]
args
)
{
CarFactory
.
BMW
.
create
()
.
sayName
()
;
CarFactory
.
AUDI
.
create
()
.
sayName
()
;
CarFactory
.
BMW
.
create
()
.
sayName
()
;
}
}