设计模式-----抽象工厂模式

参考:http://blog.csdn.net/ipqxiang/article/details/1955677

       程杰《大话设计模式》清华大学出版社

一、抽象工厂模式

          提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

二、四个重要角色(类)

   抽象工厂、具体工厂、抽象产品、具体产品

三、程序示例

抽象工厂接口
//抽象工厂模式



package com;



//抽象工厂接口:包括2个product: IUser  IDepartment

public interface IFactory 

{

    IUser createUser();

    IDepartment createDepartment();



}

 

具体工厂
//具体工厂: StudentFactory

class StudentFactory implements IFactory

{

    public IUser createUser()

    {

        return new StudentUser();

    }

    

    public IDepartment createDepartment()

    {

        return new StudentDepartment();

    }

}



//具体工厂:  TeacherFactory

class TeacherFactory implements IFactory

{

    public IUser createUser()

    {

        return new TeacherUser();

    }

    

    public IDepartment createDepartment()

    {

        return new TeacherDepartment();

    }

}

 

抽象产品一
//抽象工厂类中的第一个产品



//抽象user接口: 两个方法  设置Name,获取Name

public interface IUser

{

    void setName(String name);



    String getName();

}

 

具体产品一
// 实现user接口: student,teacher

class StudentUser implements IUser 

{

    private String name;



    public void setName(String name) 

    {

        this.name = "Student: " + name;

    }



    public String getName() 

    {

        return name;

    }

}



class TeacherUser implements IUser 

{

    private String name;



    public void setName(String name) 

    {

        this.name = "Teacher: " + name;

    }



    public String getName() 

    {

        return name;

    }

}

 

抽象产品二
//抽象工厂类中的第二个产品



//抽象Department接口: 两个方法  设置Department,获取Department

public interface IDepartment 

{

    void setDepartment(String department);

    

    String getDepartment();

}

 

具体产品二
//实现Department接口: student,teacher

class StudentDepartment implements IDepartment

{

    private String department = null;

    

    public void setDepartment(String department)

    {

        this.department = " Student: "+department;

    }

    

    public String getDepartment()

    {

        return department;

    }

}



class TeacherDepartment implements IDepartment

{

  private String department = null;

    

    public void setDepartment(String department)

    {

        this.department = " Teacher: "+department;

    }

    

    public String getDepartment()

    {

        return department;

    }

}

 

测试程序(客户端)
//客户端测试程序



package com;



public class ClientMain 

{

    public static void main(String[] args)

    {

        String name = "gqy";

        String department ="CSU";

        

        //IFactory student = new StudentFactory();

        IFactory student = new TeacherFactory();

        

        IUser user = student.createUser();

        user.setName(name);

        System.out.println(user.getName());

        

        IDepartment id = student.createDepartment();

        id.setDepartment(department);

        System.out.println(id.getDepartment());        



    }



}

 

你可能感兴趣的:(抽象工厂模式)