JAVA设计模式——工厂—抽象工厂模式

1、工厂模式

常用的工厂模式是静态工厂,利用static方法,作为一种类似于常见的工具类Utils等辅助效果。

注:为了让大家更直观,笔者采用类部类的方式示例

// 示例接口
public interface FactoryExample {


    class A implements FactoryExample {

        public A() {
            System.out.println("代码块a的构造函数执行了...");
        }


    }

    class B implements FactoryExample {

        public B() {
            System.out.println("代码块b报道...");
        }


    }

    class C implements FactoryExample {

        public C() {
            System.out.println("代码块c前来助阵...");
        }


    }

    // 静态工厂
    class StaticFactory{
        public FactoryExample getA(){
            return new A();
        }
        public FactoryExample getB(){
            return new B();
        }
        public FactoryExample getC(){
            return new C();
        }
    }

    // 测试
    class Test {


        public static void main(String[] args) {

            StaticFactory staticFactory = new StaticFactory();
            staticFactory.getA();
            staticFactory.getB();
            staticFactory.getC();

        }

    }

}

   打印结果如下:

                                           

2、抽象工厂模式

一个工厂接口定义了方法,其子类实现此工厂接口(实现了此接口的类就是工厂),重写了该工厂接口的方法

此时,接口编程的优点就出现了,我们可以新增类(只需要实现工厂接口),只需要同时新增一个工厂类,客户端就可以轻松调用新工厂的代码。

// 示例接口
public interface FactoryExample {


    // 抽象工厂接口
    interface AbstractFactory{
        FactoryExample getFactoryExample();
    }

      class A implements AbstractFactory,FactoryExample{

        public A() {
            System.out.println("代码块a的构造函数执行了...");
        }

        @Override
        public FactoryExample getFactoryExample() {
            return new A();
        }
    }

    class B implements AbstractFactory,FactoryExample{

        public B() {
            System.out.println("代码块b报道...");
        }

        @Override
        public FactoryExample getFactoryExample() {
            return new B();
        }
    }

    class C implements AbstractFactory,FactoryExample{

        public C() {
            System.out.println("代码块c前来助阵...");
        }

        @Override
        public FactoryExample getFactoryExample() {
            return new C();
        }
    }

    // 测试
    class Test {

        public static FactoryExample getExample(FactoryExample factoryExample){
            return factoryExample;
        }

        public static void main(String[] args) {

            FactoryExample example = Test.getExample(new A());
            FactoryExample example1 = Test.getExample(new B());
            FactoryExample example2 = Test.getExample(new C());

        }

    }

}

   打印结果与上面结果一致

   

 

                {\__/}                                          {\__/}
                ( ·-·)                                          (·-· )
                / >------------------------------------------------< \
                         |      ☆                            |
                         |         ☆                         |
                         |  ★                                |
                         |         ☆                         |
                         |      ☆                            |
                         |                                   |
                         -------------------------------------

如有兴趣可以关注我的公众号 :

                                                                   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值