spring学习之工厂模式
来源:互联网 发布:微博盗号教程知乎 编辑:程序博客网 时间:2024/05/19 18:43
1.设计模式是一套反复使用,多数人知晓,经过分类、代码设计的经验总结。
2.工厂模式的定义:为创建一组相关或者相互依赖的对象提供一个接口,而无需指定他们的具体实现类。
3.工厂模式的适用性
(1)有一组类似的对象需要创建;
(2)系统需要考虑扩展性。
4.工厂模式的三个角色
(1)抽象产品(接口)
(2)具体产品(实现类)
(3)生产者(工厂类)
其中concreteProduct是具体产品,product是抽象产品,creator是生产者。
5.工厂模式的好处:
提供好的灵活性和代码复用性,代码仅仅依赖接口而不是实现类。但是代码复杂度会有所增加。
下面是一个完整的工厂模式代码片段
students类
public class Students { private String sid; private String name; private int age; public Students(String sid, String name, int age) { super(); this.sid = sid; this.name = name; this.age = age; } public Students() { super(); } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
users类
public class Users { private String uid; private String name; private String passwd; public Users(String uid, String name, String passwd) { super(); this.uid = uid; this.name = name; this.passwd = passwd; } public Users() { super(); } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } }
抽象接口
public interface BussinessDAO { //保存实体 //保存任何一个对象,与参数无关 public boolean save(Object obj);}
具体实现类
public class StudentsDAOImpl implements BussinessDAO { @Override public boolean save(Object obj) { Students s=(Students)obj; System.out.println("学号"+s.getSid()+"姓名"+s.getAge()); return true; }}
public class UsersDAOImpl implements BussinessDAO{ @Override public boolean save(Object obj) { Users u=(Users)obj; System.out.println("用户名:"+u.getName()+"密码:"+u.getPasswd()); return true; }}
工厂类
public class BussinessFactory { public static BussinessDAO getInstance(String className){ if(className.equals("com.qzp.model.Students")) { return new StudentsDAOImpl(); } else if(className.equals("com.qzp.model.Users")) { return new UsersDAOImpl(); } else { return null; } }}
测试方法
public class TestBussinessFactory extends TestCase{ public void testGetInstance(){ BussinessDAO dao=BussinessFactory.getInstance("com.qzp.model.Students"); Students s=new Students(); s.setAge(11); s.setName("qzp"); s.setSid("001"); dao.save(s); }}
0 0
- spring学习之工厂模式
- Spring之工厂模式
- Spring之工厂模式
- spring学习必备设计模式之工厂模式
- Spring学习必备知识之抽象工厂模式
- spring学习笔记工厂模式
- Spring学习之工厂Bean
- Java学习之工厂模式
- 设计模式入门学习之工厂模式(工厂方法模式)
- 设计模式入门学习之工厂模式(工厂方法模式)
- 设计模式学习之工厂模式(简单工厂模式)
- 设计模式学习之简单工厂模式和工厂模式
- java学习之工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式学习之简单工厂、工厂方法、抽象工厂
- SPRING设计思想之工厂模式
- 设计模式入门学习之工厂模式
- 设计模式学习笔记之工厂模式
- 设计模式学习之简单工厂模式
- /添加SQLDeveloper时出现的问题
- 【bzoj1013】【高斯消元】【球形空间产生器sphere】
- iOS-Runloop总结
- nyoj 954 N!(基本算式定理)
- hdu1059---Dividing
- spring学习之工厂模式
- Android调用系统自带文件管理器
- Oracle 12cR1 Relink时报错:ld.so.1: skgxpinfo: fatal: libons.so: open failed: No such file or directory
- ubuntu屏蔽优酷广告
- [网络编程] 最常见的HTTP错误
- Java基础——常用修饰符分析
- [CODEVS 1244] 云中通信
- PHP引用(&)使用详解
- 天声人語 20150221