美文网首页
工厂设计模式

工厂设计模式

作者: 南娇 | 来源:发表于2018-11-08 22:55 被阅读14次

    定义:定义一个创建对象的接口,让子类去实现那个接口,而对象的创建统一交由工厂去创建

    一、简单工厂:又称静态工厂,主要有一个静态方法,跟据这个方法的参数,返回实现了同一个接口的不同的对象

    要生产的对象实现的统一接口
     public interface GoodsImpl {
           void onCreateGoods();
     }
    

    要生产的对象A

       public class AppleGood implements GoodsImpl{
         @Override
         public void onCreateGoods() {
            Log.e("TAG","生产一个苹果");
         }
     }
    

    要生产的对象A

     public class BananaGoods implements GoodsImpl{
         @Override
         public void onCreateGoods() {
            Log.e("TAG","生产一个香蕉");
         }
     }
    

    生产对象的工厂

     public class GoodsFactory {
        public static GoodsImpl createGoods(String goods){
             if(goods.equals("香蕉")){
                 return new BananaGoods();
             }else if(goods.equals("苹果")){
                 return new AppleGood();
             }
            return null;
         }
     }
    

    用法

       private void initData() {
             AppleGood goods= (AppleGood) GoodsFactory.createGoods("苹果");
             goods.onCreateGoods();
         }
    

    二、工厂方法:生产不同的产品对应不同的工厂;定义工厂的统一接口,所有工厂都实现这个接口。这样没生产一种产品都会有一个工厂,如果生产的产品比较多,那么工厂类就会不断增加

    工厂的统一接口

     public interface FactoryImp {
          GoodsImpl onCreate();
     }
    

    生产产品A的工厂

     public class BananaFactory implements FactoryImp{
         @Override
         public GoodsImpl onCreate() {
             return null;
          }
      }
    

    生产B的工厂

     public class AppleFactory implements FactoryImp{
          @Override
          public GoodsImpl onCreate() {
               return null;
          }
      }
    

    三、抽象工厂:个人感觉时工厂方法的扩展,扩展出多个工厂,每个工厂不只是只能生产一种产品

    工厂的统一接口

     public interface FactoryImp {
         GoodsImpl onCreateApple();
         GoodsImpl onCreateBanana();
     }
    

    工厂A

      public class FactoryA implements FactoryImp{
        @Override
        public GoodsImpl onCreateApple() {
            return null;
        }
        @Override
        public GoodsImpl onCreateBanana() {
            return null;
        }
    }
    

    工厂B

      public class FactoryB implements FactoryImp{
        @Override
        public GoodsImpl onCreateApple() {
            return null;
        }
        @Override
        public GoodsImpl onCreateBanana() {
            return null;
        }
    }
    

    相关文章

      网友评论

          本文标题:工厂设计模式

          本文链接:https://www.haomeiwen.com/subject/qyqgxqtx.html