Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've just been reading through some basic design patterns,

Could someone tell me if the term "strategy pattern" only applies if your implementing a completely abstract interface?

What about when your children (concretes?) inherit from a parent class (the strategy?) with some implemented methods and some virtual and/or abstract functions? Otherwise the rest of the implementation, the idea that you can switch between different children at run time, is identical. This is something i'm quite familiar with, i was wondering if you would still call it the Strategy Pattern or if that term only applies to using an interface.

Apologies if this question is not appropriate! Or if this is just nitpicking :) I'm still learning and i'm not really sure if design patterns are quite heavily defined within the industry or just a concept to be implemented as you like.

share|improve this question

2 Answers 2

up vote 1 down vote accepted

Could someone tell me if the term "strategy pattern" only applies if your implementing a completely abstract interface?

Strategy pattern is about choosing the algorithm at runtime; technically the algorithm is ran by calling a function, so only that function needs to be abstract/left unimplemented. If all the similar algorithm call other function, independent of the algorithm, those functions can be pushed in the superclass.

For example you implement a strategy pattern for saving something in a file; depending on something else you could be saving it in XML or binary format. You can implement the logic of saving the data in a file in the superclass (since it's common to all implementation) and the logic of converting the data in XML in a subclass and in binary in a another subclass.

The idea behind patterns is not a rigorous implementation but an idea of design; you can implement it as you find it suitable for your particular problem.

share|improve this answer

A strategy is simply where an object takes in something that defines how it should handle some behavior. It might be an implementation of an abstract base class, it might be a script, it might be a functor, it could be any number of things.

The pattern itself is a design that uses this concept.

share|improve this answer
    
Before design patterns, we used to call this "implementation." –  Blrfl Nov 10 '12 at 16:35

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.