zoukankan      html  css  js  c++  java
  • 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();
    }
    }

    }
  • 相关阅读:
    使用 HtmlInputHidden 控件在本页面保持状态和跨页面传值
    asp.net页面回传与js调用服务端事件、PostBack的原理详解
    关于.net委托的一篇妙文
    C# 基础25问
    存储过程分页
    C#中的格式化字符串
    大批量数据的插入之终极性能提升SqlBulkCopy
    统计某个字符串中指定字符串出现的次数
    powerdesigner 15打开pdm文件弹出安装打印机窗口的解决方法
    Convert.ToInt32(),Int.Parse(),Int.TryParse()的区别
  • 原文地址:https://www.cnblogs.com/yy2012/p/7155696.html
Copyright © 2011-2022 走看看