zoukankan      html  css  js  c++  java
  • java工厂模式demo

    package object;
    
    /**
     * @author dayu
     * @date 2019/03/05
     * @Describe 通过反射类改进工厂的设计模式可以最大的改进子类的操作,通过new造成耦合问题 ...工厂类使用泛型可以变成高可用的状态
     */
    public class FactoryDemo {
        public static void main(String[] args) {
            // IFruit fruit = new Orange();
    
            IFruit fruit = Factory.getInstance("object.Banana");
            fruit.eat();
    
            IMessage msg = Factory.getInstance("object.Msgs");
            msg.print();
        }
    }
    
    interface IFruit {
        void eat();
    }
    
    interface IMessage {
        void print();
    }
    
    class Msgs implements IMessage {
        @Override
        public void print() {
            System.out.println("Msgs.print()");
        }
    
    }
    
    class Orange implements IFruit {
        @Override
        public void eat() {
            System.out.println(this.getClass().getName() + " 吃橘子");
        }
    }
    
    class Apple implements IFruit {
        @Override
        public void eat() {
            System.out.println(this.getClass().getName() + " 吃苹果");
        }
    }
    
    class Banana implements IFruit {
        @Override
        public void eat() {
            System.out.println(this.getClass().getName() + " 吃香蕉");
        }
    }
    
    /**
     * 工厂类使用泛型可以变成高可用的状态
     */
    class Factory {
        private Factory() {}
    
        @SuppressWarnings("unchecked")
        public static <T> T getInstance(String className) {
            T obj = null;
            try {
                obj = (T)Class.forName(className).newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return obj;
        }
    
    }
  • 相关阅读:
    Count on a Tree II
    DZY Loves Math
    二次剩余
    exCRT & 骆克强乘法
    CF 585 E Present for Vitalik the Philatelist
    Dirichlet 前缀和的几种版本
    51nod 1630(定积分 + 期望)
    Atcoder刷题小记
    3194. 【HNOI模拟题】化学(无标号无根树计数)
    3754. 【NOI2014】魔法森林(LCT)
  • 原文地址:https://www.cnblogs.com/dayu007/p/10511218.html
Copyright © 2011-2022 走看看