zoukankan      html  css  js  c++  java
  • java软件设计的三层结构

    接口:

    package dao;
    
    public interface Dao {
        String getData();
    }
    package biz;
    
    import dao.Dao;
    
    public interface Biz {
        void setDao(Dao dao);
        String dealData();
    }
    package view;
    
    import biz.Biz;
    
    public interface View {
        void setBiz(Biz biz);
        void showData();
    }

    实现类:

    package dao;
    
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class FileDaoImpl implements Dao {
    
        @Override
        public String getData() {
            String data= null;
            BufferedReader br= null;
            try {
                br= new BufferedReader(new FileReader("test.txt"));
                data= br.readLine();
            }  catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                if (br!=null) {
                    try {
                        br.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            return data;
        }
    
    }
    package biz;
    
    import dao.Dao;
    
    public class UpperCaseBizImpl implements Biz {
        private Dao dao;
        @Override
        public void setDao(Dao dao) {
            this.dao= dao;
        }
    
        @Override
        public String dealData() {
            String data= dao.getData();
            if (data != null) {
                data.toUpperCase();
            }
            return data;
        }
    
    }
    package view;
    
    import biz.Biz;
    
    public class TextViewImpl implements View {
        private Biz biz;
        @Override
        public void setBiz(Biz biz) {
            this.biz= biz;
        }
    
        @Override
        public void showData() {
            String data= biz.dealData();
            System.out.println(data);
        }
    
    }

    Object Factory:

    package factory;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    import biz.Biz;
    
    import view.View;
    
    import dao.Dao;
    
    public class SimpleFactory {
        private Properties properties;
        public SimpleFactory() {
            properties= new Properties();
            InputStream is= null;
            try {
                is= new FileInputStream("conf.properties");
                properties.load(is);
            }  catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                if (is!=null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }
        
        public Dao createDao(){
            String className = properties.getProperty("dao");
            return (Dao)createObject(className);
        }
        public Biz createBiz(){
            String className= properties.getProperty("biz");
            return (Biz) createObject(className);
        }
        public View createView(){
            String className= properties.getProperty("view");
            return (View) createObject(className);
        }
        private Object createObject(String name){
            Object result= null;
            try {
                Class clazz = Class.forName(name);
                result = clazz.newInstance();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return result;
        }
    }

    配置文件:conf.properties

    view=view.TextViewImpl
    biz=Biz.UpperCaseBizImpl
    dao=Dao.FileDaoImpl

    文本文件:test.txt

    HELLO WORLD

    测试类:

    package test;
    
    import view.View;
    import biz.Biz;
    import dao.Dao;
    import factory.SimpleFactory;
    
    public class TestMain {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            SimpleFactory simpleFactory= new SimpleFactory();
            Dao dao= simpleFactory.createDao();
            Biz biz= simpleFactory.createBiz();
            biz.setDao(dao);
            View view = simpleFactory.createView();
            view.setBiz(biz);
            view.showData();
        }
    
    }

    output:

    HELLO WORLD

  • 相关阅读:
    数据结构与算法实例(数组实现)
    从王者荣耀看设计模式(二十三.访问者模式)
    20172319 2018-3_2018-7《程序设计与数据结构》课程总结
    哈夫曼编码
    20172319 实验三《查找与排序》实验报告
    20172319 《程序设计与数据结构》 第九周学习总结
    20172319 实验二《树》实验报告
    20172319 《程序设计与数据结构》 第八周学习总结
    20172319 《程序设计与数据结构》 第七周学习总结
    20172319 《程序设计与数据结构》 第六周学习总结
  • 原文地址:https://www.cnblogs.com/westward/p/5463227.html
Copyright © 2011-2022 走看看