Click here to Skip to main content
15,914,323 members
Home / Discussions / Design and Architecture
   

Design and Architecture

 
Answer[Message Deleted] Pin
#1235-Jun-07 18:00
#1235-Jun-07 18:00 
GeneralRe: Overriding Virtual Members Pin
Stephen Hewitt5-Jun-07 19:18
Stephen Hewitt5-Jun-07 19:18 
General[Message Deleted] Pin
#1235-Jun-07 19:31
#1235-Jun-07 19:31 
GeneralRe: Overriding Virtual Members Pin
Stephen Hewitt5-Jun-07 19:38
Stephen Hewitt5-Jun-07 19:38 
GeneralRe: Overriding Virtual Members Pin
CPallini5-Jun-07 22:52
mveCPallini5-Jun-07 22:52 
GeneralRe: Overriding Virtual Members Pin
CPallini5-Jun-07 22:49
mveCPallini5-Jun-07 22:49 
GeneralRe: Overriding Virtual Members Pin
Leslie Sanford5-Jun-07 20:35
Leslie Sanford5-Jun-07 20:35 
GeneralRe: Overriding Virtual Members [modified] Pin
Stephen Hewitt5-Jun-07 20:46
Stephen Hewitt5-Jun-07 20:46 
That's where, in a perfect world, documentation would come into the picture. It might be valid to do things both before and after. One pattern you may be interesting in is the following:

NOTE: This is in C++. I'm no C# expert so I'm not sure how much of this will cleanly translate.

class CMyClass
{
public:
	bool DoSomething() // NOTE: I'm not virtual!
	{
		// Do something.
 
		int size = DoSomething_GetSize();
 
		// Do other stuff.
 
		std::string str = DoSomething_GetString();
 
		// Do even more stuff.....
	}
 
private:
	virtual int DoSomething_GetSize()
	{
		return 1; // Default.
	}
 
	virtual std::string DoSomething_GetString()
	{
		return std::string("Hello"); // Default.
	}
};


In this pattern all the methods that users call are implemented by non-virtual public functions. Any customization needed is implemented by virtual function “hooks” that customize specific aspects of the public functions. In this pattern you don’t call the base class version (you can't as they're private) and customization is limited to specific preplanned areas.

Steve

GeneralRe: Overriding Virtual Members Pin
Stephen Hewitt5-Jun-07 21:10
Stephen Hewitt5-Jun-07 21:10 
General[Message Deleted] Pin
#1235-Jun-07 21:54
#1235-Jun-07 21:54 
GeneralRe: Overriding Virtual Members Pin
Stephen Hewitt5-Jun-07 22:02
Stephen Hewitt5-Jun-07 22:02 
GeneralRe: Overriding Virtual Members Pin
Dave Kreskowiak6-Jun-07 5:22
mveDave Kreskowiak6-Jun-07 5:22 
GeneralRe: Overriding Virtual Members Pin
Chris-Kaiser6-Jun-07 12:26
Chris-Kaiser6-Jun-07 12:26 
GeneralRe: Overriding Virtual Members Pin
DavidNohejl5-Jun-07 23:31
DavidNohejl5-Jun-07 23:31 
GeneralRe: Overriding Virtual Members Pin
Leslie Sanford6-Jun-07 4:53
Leslie Sanford6-Jun-07 4:53 
GeneralRe: Overriding Virtual Members Pin
Stephen Hewitt6-Jun-07 15:51
Stephen Hewitt6-Jun-07 15:51 
GeneralRe: Overriding Virtual Members Pin
Chris-Kaiser6-Jun-07 12:28
Chris-Kaiser6-Jun-07 12:28 
GeneralRe: Overriding Virtual Members Pin
Chris-Kaiser6-Jun-07 12:21
Chris-Kaiser6-Jun-07 12:21 
GeneralRe: Overriding Virtual Members Pin
PaulPrice6-Jun-07 7:59
PaulPrice6-Jun-07 7:59 
GeneralRe: Overriding Virtual Members Pin
PaulPrice6-Jun-07 22:03
PaulPrice6-Jun-07 22:03 
GeneralRe: Overriding Virtual Members Pin
Leslie Sanford6-Jun-07 8:35
Leslie Sanford6-Jun-07 8:35 
GeneralRe: Overriding Virtual Members Pin
PaulPrice6-Jun-07 22:04
PaulPrice6-Jun-07 22:04 
GeneralRe: Overriding Virtual Members Pin
Chris-Kaiser6-Jun-07 12:14
Chris-Kaiser6-Jun-07 12:14 
GeneralRe: Overriding Virtual Members Pin
Chris-Kaiser6-Jun-07 13:07
Chris-Kaiser6-Jun-07 13:07 
AnswerRe: Overriding Virtual Members Pin
Chris-Kaiser6-Jun-07 12:18
Chris-Kaiser6-Jun-07 12:18 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.