Please review my Factory Pattern implementation

 
275   99.7
Apr 06, 2011
 
Hi I am starting a school project for which decided to go by an Interface pattern.
Please review the code and let me will it work out for future implementation example adding WCF project.

Thank you!


class Program
{
    static void Main(string[] args)
    {
        StudentView view = new StudentView();
        view.ShowStudent();
    }
}

//Student UI 
public class StudentView
{
    IAcademic _academic = new Academic();
    IParents _parents = new Parents();
    IService _service = new BusinessFactory("Student");
    IStudent _student;

    public StudentView()
    {
        _student = (IStudent)_service.GetService();
        _academic.Year = "2010";
        _parents.MotherName = "Test";
        _student.StudentName = "Imran";
        _student.Academic = _academic;
        _student.Parents = _parents;
    }

    public void ShowStudent()
    {
        _student.ShowStudent();
    }
}

//Academic Details Interface 
public interface IAcademic
{
    string Year { get; set; }
}

//Parent Details Interface 
public interface IParents
{
    string MotherName { get; set; }
}

//Student Detials Interface 
public interface IStudent
{
    IAcademic Academic { get; set; }
    IParents Parents { get; set; }
    string StudentName { get; set; }
    void ShowStudent();
}

//Common Service 
public interface IService
{
    IService GetService();
}

//Object Factory 
public class BusinessFactory : IService
{
    string _name = string.Empty;

    public BusinessFactory(string name)
    {
        _name = name;
    }

    #region IService Members

    public IService GetService()
    {
        switch (_name)
        {
            case "Student":
                return new StudentManager().GetService();
                break;
            default: return null;
        }
    }

    #endregion
}

//Academic UserControl 
public class Academic : IAcademic
{
    string _year;

    #region IAcademic Members

    public string Year
    {
        get
        {
            return _year;
        }

        set
        {
            _year = value;
        }
    }

    #endregion
}

//Parent UserControl 
public class Parents : IParents
{
    string _motherName;

    #region IParents Members

    public string MotherName
    {
        get
        {
            return _motherName;
        }

        set
        {
            _motherName = value;
        }
    }

    #endregion
}

//Student Manager(BL) 

public class StudentManager : IStudent, IService
{
    IAcademic _iacademic;
    IParents _iparents;
    string _studentName;

    #region IStudent Members

    public IAcademic Academic
    {
        get
        {
            return _iacademic;
        }

        set
        {
            _iacademic = value;
        }
    }

    public IParents Parents
    {
        get
        {
            return _iparents;
        }

        set
        {
            _iparents = value;
        }
    }

    public string StudentName
    {
        get
        {
            return _studentName;
        }

        set
        {
            _studentName = value;
        }
    }

    #endregion

    #region IStudent Members

    public void ShowStudent()
    {
        Console.WriteLine("Name:{0}\nMother Name:{1}\nYear:{2}", _studentName, _iparents.MotherName, _iacademic.Year);
        Console.ReadLine();
    }

    #endregion

    #region IService Members
    public IService GetService()
    {
        return this;
    }

    #endregion
}