工厂方法模式

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值