工廠方法模式
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();
}
}
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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.