码迷,mamicode.com
首页 > 编程语言 > 详细

spring学习之工厂模式

时间:2015-02-21 15:31:16      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:接口   设计   工厂模式   

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);    
    }
}

spring学习之工厂模式

标签:接口   设计   工厂模式   

原文地址:http://blog.csdn.net/qzp1991/article/details/43898495

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!