• java工厂模式的测试



    /**
    * 工厂模式的测试
    * <p>
    * 工厂方法模式
    * 工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。 *   来看下它的组成:
    * 1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
    * 2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
    * 3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
    * 4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
    */
    public class MyFactoryClass {

    public static void main(String[] age) {
    //获取产品plane
    VehicleFactory vehicleFactory = new DefauleFactory();
    vehicleFactory.createPlan().rum();

    //获取产品Broom
    VehicleFactory vehicleFactory2 = new DefauleFactory();
    Broom b = vehicleFactory2.createBroom();
    b.rum();
    b.get();


    /**
    * 输出结果为:
    *plane
    broom
    123456789
    */
    }

    //===========================================================================产品

    //抽象产品角色(产品的父类)
    public interface Moveable {
    void rum();
    }

    //具体产品角-1
    public static class Plane implements Moveable {
    @Override
    public void rum() {
    System.out.println("plane");
    }
    }

    //具体产品角色-2
    public static class Broom implements Moveable {
    @Override
    public void rum() {
    System.out.println("broom");
    }

    public void get() {
    System.out.println("123456789");
    }
    }

    //===========================================================================工厂类
    //抽象工厂
    public static abstract class VehicleFactory {
    abstract Plane createPlan();

    abstract Broom createBroom();
    }

    //具体工厂
    public static class DefauleFactory extends VehicleFactory {
    @Override
    Plane createPlan() {
    return new Plane();
    }

    @Override
    Broom createBroom() {
    return new Broom();
    }
    }

    }
  • 相关阅读:
    Problem D: 双向冒泡排序
    Problem C: 查找最大元素
    Problem D: 小平查密码
    Problem C: 文件单词首字母大写
    Problem B: 文件操作文本文件读入
    Problem A: 文件操作二进制文件读入
    Problem A: 实现链表(线性表)
    【leetcode】包含min函数的栈
    【leetcode】反转链表
    【leetcode】合并两个排序的链表
  • 原文地址:https://www.cnblogs.com/yy2012/p/7155696.html
Copyright © 2020-2023  润新知