当前位置: 首页 > news >正文

杭州网站推广平台浙江建设信息港官网证书查询

杭州网站推广平台,浙江建设信息港官网证书查询,舆情网站直接打开怎么弄,网络建设公司名称一、什么是耦合程序之间的依赖关系#xff1a;①类之间的依赖②方法之间的依赖注意#xff1a;不可能完全的消除依赖关系#xff0c;而只能是降低程序之间的依赖关系二、解耦降低程序之间的依赖关系#xff1a;1.解决类之间的依赖关系#xff1a;①通过读取配置文件来获取…一、什么是耦合程序之间的依赖关系①类之间的依赖②方法之间的依赖注意不可能完全的消除依赖关系而只能是降低程序之间的依赖关系二、解耦降低程序之间的依赖关系1.解决类之间的依赖关系①通过读取配置文件来获取要创建对象的全限定类名②使用反射来创建类的对象尽量避免new关键字的使用三、问题引出1.新建Maven项目2.修改配置文件添加如下代码让程序打包成Jar包的形势jar3.开始编写实验代码整体架构如下3.持久层接口package com.huhai.Dao;/***持久层接口*/public interface IAccountDao {public abstract void save();}4.持久层接口实现类package com.huhai.Dao.Impl;import com.huhai.Dao.IAccountDao;/*** 持久层实现类*/public class AccountDaoImpl implements IAccountDao {public void save() {System.out.println(数据保存成功);}}5.业务层接口package com.huhai.Service;/***业务层接口*/public interface ISaveAccountService {public abstract void save();}6.业务层接口实现类package com.huhai.Service.Impl;import com.huhai.Dao.Impl.AccountDaoImpl;import com.huhai.Service.ISaveAccountService;/*** 业务层实现类*/public class AccountServiceImpl implements ISaveAccountService {private AccountDaoImpl accountDao new AccountDaoImpl();public void save() {accountDao.save();}}7.表现层package com.huhai;import com.huhai.Service.Impl.AccountServiceImpl;public class Realize {private static AccountServiceImpl accountService;public static void main(String[] args) {accountService new AccountServiceImpl();accountService.save();}}可以看出它们之间的依赖关系非常严重因此需要解耦四、使用工厂模式降低程序耦合度1.项目架构2.工厂类package com.huhai.Factory;import java.io.IOException;import java.io.InputStream;import java.util.Properties;/*** 一个创建Bean对象的工厂* 它就是创建Server和Dao对象的*/public class BeanFactory {/*** 定义Properties对象*/private static Properties properties;/*** 使用静态代码段为properties赋值*/static {/*** 实例化对象*/properties new Properties();/*** 获取properties流对象* 最好不要直接new因为传路径的时候路径是一个容易出错的地方* 因为配置文件在resources根目录下所以可以直接填写文件名字bean.properties作为参数* 使用类加载器来获得文件的路径*/InputStream in BeanFactory.class.getClassLoader().getResourceAsStream(bean.properties);try {properties.load(in);} catch (IOException e) {/*** 配置文件如果出错则没有必要继续运行* 抛出错误终止整个程序*/throw new ExceptionInInitializerError(初始化异常);}}/*** 使用工厂模式创建对象* 因为返回的对象不一定是一个类所以返回值类型为Object或者泛型* 根据bean的名称获取bean对象*/public static Object getBean(String beanName){/*** 初始化返回对象*/Object bean null;/*** 根据传入的beanName参数获取properties中的对应类的全限定类名*/String beanPath properties.getProperty(beanName);try {bean Class.forName(beanPath).newInstance();} catch (Exception e) {e.printStackTrace();}return bean;}}工厂类升级版——工厂类的单例模式package com.huhai.Factory;import java.io.InputStream;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import java.util.Properties;/*** 一个创建Bean对象的工厂* 它就是创建Server和Dao对象的*/public class BeanFactory {/*** 定义Properties对象*/private static Properties properties;/*** 定义一个Map使之能够存放已经实例化的对象* 该Map即为容器* 该容器的建造是为了完成工厂的类的单例模式*/private static Map beans;/*** 使用静态代码段为properties赋值*/static {try {/*** 实例化对象*/properties new Properties();/*** 获取properties流对象* 最好不要直接new因为传路径的时候路径是一个容易出错的地方* 因为配置文件在resources根目录下所以可以直接填写文件名字bean.properties作为参数* 使用类加载器来获得文件的路径*/InputStream in BeanFactory.class.getClassLoader().getResourceAsStream(bean.properties);properties.load(in);/*** 配置文件如果出错则没有必要继续运行* 抛出错误终止整个程序*//****/beans new HashMap();Enumeration keys properties.keys();/*** 遍历所有的keys*/while(keys.hasMoreElements()){String key keys.nextElement().toString();//根据配置文件得到指定类的全限定类名String property properties.getProperty(key);//使用反射实例化对象Object obj Class.forName(property).newInstance();//将对象放进仓库beans.put(key, obj);}}catch (Exception e){throw new ExceptionInInitializerError(初始化properties失败);}}/*** 使用工厂模式创建对象* 因为返回的对象不一定是一个类所以返回值类型为Object或者泛型* 根据bean的名称获取bean对象*/public static Object getBean(String beanName){//根据bean的名称获取bean单例对象return beans.get(beanName);}}3.持久层接口package com.huhai.Dao;/***持久层接口*/public interface IAccountDao {public abstract void save();}4.持久层接口实现类package com.huhai.Dao.Impl;import com.huhai.Dao.IAccountDao;/*** 持久层实现类*/public class AccountDaoImpl implements IAccountDao {public void save() {System.out.println(数据保存成功);}}5.业务层接口package com.huhai.Service;/***业务层接口*/public interface IAccountService {public abstract void save();}6.业务层接口实现类package com.huhai.Service.Impl;import com.huhai.Dao.IAccountDao;import com.huhai.Factory.BeanFactory;import com.huhai.Service.IAccountService;/*** 业务层实现类*/public class AccountServiceImpl implements IAccountService {/*** 使用工厂模式创建对象降低程序耦合度*/private IAccountDao accountDao (IAccountDao)BeanFactory.getBean(accountDaoImpl);public void save() {accountDao.save();}}7.表现层package com.huhai;import com.huhai.Factory.BeanFactory;import com.huhai.Service.IAccountService;public class Realize {public static void main(String[] args) {/*** 为了解耦使用工厂模式创建对象*/IAccountService accountService (IAccountService) BeanFactory.getBean(accountServiceImpl);accountService.save();System.out.println(accountService);}}8.bean.properties配置文件#键(key)用小写accountServiceImplcom.huhai.Service.Impl.AccountServiceImplaccountDaoImplcom.huhai.Dao.Impl.AccountDaoImpl
http://www.zqtcl.cn/news/150954/

相关文章:

  • 新网站应该怎么做seo品牌推广方案思维导图
  • 想要网站导航推广页浅谈中兴电子商务网站建设
  • 免费引流在线推广成都网站优化费用
  • 老河口市网站佛山市点精网络科技有限公司
  • word模板免费网站seo引擎优化是做什么的
  • 办网站怎么赚钱鄠邑建站 网站建设
  • 宜春网站建设推广微信小程序开发
  • 巴南城乡建设网站免费网站建设软件大全
  • 湖南网站建设公公司没有自己的网站
  • 刚建设的网站如何推广网站恢复正常
  • 怎么做制作网站的教程永久免费空间免备案
  • 网站维护运营怎么做简单的手机网址大全
  • 网站建设规划设计公司排名使用模块化的网站
  • 南宁网站seo大概多少钱门户网站建设公司渠道
  • 如何建国际商城网站海门做网站公司
  • 做网站应该画什么图注册子公司流程及所需资料
  • 嵊州市建设银行网站怎么自己做游戏软件
  • 用模板快速建站中园建设银行网站
  • 网站建设罒金手指下拉壹陆韩国最新新闻消息
  • 东莞企业网站推广技巧wordpress怎么汉化
  • 17网站一起做网店如何下单iis服务器网站301重定向怎么做
  • 网站如何做线上支付功能seo网站推广优化费用
  • 贵州灵溪seo整站优化wordpress进行不
  • 三网一体网站建设网站开发环境分析
  • 广州白云机场网站建设查询域名备案信息
  • 苗族网站建设中牟做网站
  • 潍坊网站建设建站哪个网站的课件做的好处
  • 网站建设平台杭州网上交易平台
  • 您提交的网站域名无备案我想学网站建设
  • 怎样做国际网站dw网页设计代码免费