TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
john john
NA
1
0
Advice on Architecture
May 19 2010 6:42 AM
I need to choose between two designs.
I came across a design in which there are different projects for the methods and data.
Example 1
What I meant is normally, if we have a USER class then
class user
{
int userid;
string username;
//methods
public void Adduser(int id, string Name)
{
}
public void RemoveUSer(int id)
{
}
}
We have a user object, attributes and the methods to manipulate the attributes. This is a normal design.
Example 2
what I came across are,
two projects
project 1. BusinessObjects
Project 2. Types (types for business objects)
Project 1 :
Public Class AddUser(AddUserInput input)
{
Public void Execute()
{ //logic to add the user
}
}
Public class RemoveUser (RemoveUserInput input)
{
Public void Execute()
{ //logic to remove the user
}
}
Public Class User: Basetypes
{
int id;
string name
//overridden methods
}
public class Basetype
{
//methods to override
gethashcode();
isnull();
isempty();
equals(); //etc
}
Project 2:
Public class AdduserInput : IOType
{
int id,
string Name
//overridden methods
}
public class RemoveUserInput : IOType
{
int id;
//overridden methods
}
public class IOType
{
//methods to override
gethashcode();
isnull();
isempty();
equals(); //etc
}
As you can see different projects for methods and for the Types.
---------------
I stronlgy disagree with the Example 2
because
1. No proper encapsulation ( data and methods are separated and any one can act on the methods)
2. The objects will be scatterd in the user interface. ( user interface will know the inner details of the business logic)
3. Design patterns can not be followed
4. Inheritance can not be used as c# doesn't support multiple inheritance and here all the objects inherit from BASETYPES. So no relationships can be established.
5. unnecessary coding ( 3 classes to make 1 function. 1 input class, 1 output class and 1 for logic)
6. Design was selected before proper analysis of the requirements.
-------------------------
I feel encapsulation and inheritance are broken here . I need your opinion please
Thanks
Reply
Answers (
2
)
Datetime format issue?
Building a dynamic query and binding to DataGridView