设计模式之工厂模式


设计模式之工厂模式

简单工厂模式(静态工厂方法

https://www.cnblogs.com/ygsworld/p/10649491.html

工厂方法模式

作用:生成某个接口的对象

在工厂对象上调用的是创建方法,生成接口的某个实现对象,与直接调用构造器是有区别的。

例子

接口和接口工厂

package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:27
 * @Description:
 */
public interface Cycle {
    /**
     * 前进
     */
    void move();
}
package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:32
 * @Description:
 */
public interface CycleFactory {
    Cycle getCycle();
}

具体实现类 和实现类的工厂类

package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:29
 * @Description:
 */
public class Unicyle implements Cycle {
    @Override
    public void move() {
        System.out.println("Unicyle");
    }

}

package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:31
 * @Description:
 */
public class UnicyleFactory implements CycleFactory{
    @Override
    public Cycle getCycle() {
        return new Unicyle();
    }
}

package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:34
 * @Description:
 */
public class BicyleFactory implements CycleFactory {
    @Override
    public Cycle getCycle() {
        return new Bicycle();
    }
}

package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:30
 * @Description:
 */
public class Tricycle implements Cycle {
    @Override
    public void move() {
        System.out.println("Tricycle");
    }
}
package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:36
 * @Description:
 */
public class TricyleFactory implements CycleFactory {
    @Override
    public Cycle getCycle() {
        return new Tricycle();
    }
}

具体实现和内部类工厂

package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:29
 * @Description:
 */
public class Unicyle implements Cycle {
    @Override
    public void move() {
        System.out.println("Unicyle");
    }

    /**
     * 内部类
     */
    public static CycleFactory unicyleFactory = new CycleFactory() {
        @Override
        public Cycle getCycle() {
            return new Unicyle();
        }
    };
}

测试

package com.suny.test;

/**
 * @Author:suny
 * @Date: 2021/12/19 21:39
 * @Description:
 */
public class testFactor {
    public static void makeCycle(CycleFactory cycleFactory){
        Cycle cycle = cycleFactory.getCycle();
        cycle.move();
    }
    public static void main(String[] args) {
        makeCycle(new BicyleFactory());
        makeCycle(new TricyleFactory());
        makeCycle(new UnicyleFactory());
       // 内部类工厂创建
          // makeCycle(Unicyle.unicyleFactory);
    }
}
//output
Bicycle
Tricycle
Unicyle

文章作者: fejxc
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fejxc !
评论
  目录