抽象工厂模式:创建一些列相关或者互相依赖的对象的接口,而无需指定他们具体的类,

1、创建工厂Factory:

package patterns.design.factory;

import java.io.InputStream;
import java.util.Properties; public class DaoFactory { // 单例
private DaoFactory(){ try {
// 读配置文件获得实现类 类名
Properties props = new Properties();
InputStream in = DaoFactory.class.getClassLoader()
.getResourceAsStream("dao.properties");
props.load(in); this.employeeDaoClassname = props.getProperty("employeeDaoClassname"); } catch (Exception e) {
throw new ExceptionInInitializerError(e);
} } private static DaoFactory instance = new DaoFactory(); public static DaoFactory newDaoFactory() {
return instance;
} private String employeeDaoClassname; // 提供方法返回实例对象dao
public EmployeeDao newEmplyeeDao() {
try {
// 反射创建对象
EmployeeDao employeeDao = (EmployeeDao) Class.forName(
this.employeeDaoClassname).newInstance();
return employeeDao;
} catch (Exception e) {
throw new RuntimeException(e);
}
} }

2.在service中调用工厂类创建对象

 package patterns.design.factory;

 import java.util.List;

 public class BusinessService {

     // service 的方法取决于功能
private EmployeeDao employeeDao; public BusinessService() {
// 自己创建对象
// 调用 工厂类获得一个dao对象
this.employeeDao = DaoFactory.newDaoFactory().newEmplyeeDao();
} //查看所有员工
public List getAllEmployees() {
return employeeDao.getAll();
} }

3.dao.properties

employeeDaoClassname=patterns.design.factory.EmployeeDaoImpl

4.EmployeeDao.java

 package patterns.design.factory;
import java.util.List;
public interface EmployeeDao {
public List getAll();
}

03.设计模式_抽象工厂模式(Abstract Fcatory)的更多相关文章

  1. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factor ...

  2. 【设计模式】抽象工厂模式 Abstract Factory Pattern

    简单工厂模式是一个工厂类根据工厂方法的参数创建不出不同的产品, 工厂方法模式是每一个产品都有一个一一对应的工厂负责创建该产品.那么今天要讲的抽象工厂模式是一个工厂能够产生关联的一系列产品.抽象工厂模式 ...

  3. 二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Messag ...

  4. 【UE4 设计模式】抽象工厂模式 Abstract Factory Pattern

    概述 描述 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类:具体的工厂负责实现具体的产品实例 抽象工厂中每个工厂可以创建多种产品(如苹果公司生产iPhone.iPad): 工厂方法 ...

  5. 设计模式之抽象工厂模式(Abstract Factory Pattern)

    一.抽象工厂模式的由来 抽象工厂模式,最开始是为了解决操作系统按钮和窗体风格,而产生的一种设计模式.例如:在windows系统中,我们要用windows设定的按钮和窗体,当我们切换Linux系统时,要 ...

  6. 设计模式 笔记 抽象工厂模式 Abstract Factory

    //---------------------------15/04/09---------------------------- //Abstract Factory 抽象工厂----对象创建型模式 ...

  7. .NET设计模式(2):1.2 抽象工厂模式(Abstract Factory)

    概述 抽象工厂模式(Abstract Factory)是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口 ...

  8. 设计模式 - 抽象工厂模式(abstract factory pattern) 具体解释

    抽象工厂模式(abstract factory pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/2709 ...

  9. 桥接模式及C++实现 C++设计模式-AbstractFactory抽象工厂模式

    桥接模式及C++实现 桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一 ...

随机推荐

  1. 函数节流和防抖(todo)

    一.什么是函数节流和函数防抖 函数节流和函数防抖目的都是避免同时多次执行函数. 函数防抖是将多次执行变成一次执行,函数节流是将多次执行变成每隔一定时间执行一次. 二.具体实现 三.什么时候需要节流,什 ...

  2. java学习——异常处理机制

    public class ExceptionDemo2 { public static void main(String[] args) { // TODO Auto-generated method ...

  3. OpenJudge 兔子与樱花

    [题解] 求任意两点间的最短路径.此题数据量较小,用Floyd算法,时间复杂度为O(n^3). 参考https://blog.csdn.net/qq_34594236/article/details/ ...

  4. U3D学习10——关节和射线检测

    1.弹簧  2.铰链  3.固定关节  4.角色关节  5.自定义关节  6.raycast和raycasthit 射线有位移参数,可以设定只触发某一层的. 7.射线检测用于高速和精确 update是 ...

  5. (转)程序员级别鉴定书(.NET面试问答集锦)

    原文地址:http://www.cnblogs.com/powertoolsteam/p/what-net-developer-should-to-know.html 葡萄城控件 作为一个.NET程序 ...

  6. CS229 6.17 Neurons Networks convolutional neural network(cnn)

    之前所讲的图像处理都是小 patchs ,比如28*28或者36*36之类,考虑如下情形,对于一副1000*1000的图像,即106,当隐层也有106节点时,那么W(1)的数量将达到1012级别,为了 ...

  7. Android Studio快捷键Ctrl+Shift+F不能用,全局搜索不能用;

    AS全局搜索Ctrl+Shift+F突然就不能用了,在AS找半天没有找到问题,原因竟然是和搜狗输入法的简繁切换冲突了:下面有图把简繁切换关闭或更换快捷键后,as的全局搜索就能用了:

  8. 网络编程socket,详细讲述osi七层协议

    一 网络编程 源方: 我们首先来说下数据在两台计算机之间的传递:操作系统控制着除应用层以外的四层 对于用户来说我们发数据一般都是在应用层,也就是我们是直接操作应用软件的,那么应用层要把数据传给传输层就 ...

  9. Java之ConcurrentHashMap

    由于工作中使用到了ConcurrentHashMap,然后查了一波资料,最后整理如下: 1. 描述: ConcurrentHashMap是在Java1.5作为HashTable的替代选择新引入的,是c ...

  10. JVM总结-字节码

    在运行过程中,每当调用进入一个 Java 方法,Java 虚拟机会在当前线程的 Java 方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数.这个栈帧的大小是提前计算好的,而且 Java 虚拟机 ...