A Design Pattern that involves creating frequently modifiable classes.

Example

 
public interface DateFormatStrategy{
	public String format(int day, int month, int year);
}
 
class DMYStrategy implements DateFormatStrategy{
	public String format(int day, int month, int year){
		return day + "/" + month + "/" + year;
	}
}
class MDYStrategy implements DateFormatStrategy{
	public String format(int day, int month, int year){
		return month + "/" + day + "/" + year;
	}
}
 
public class Main{
	public static void main(String [] args){
		Date d  = new Date(21, 7, 2025);
		d.setStrategy(new DMYStrategy());
		System.out.println(d); // will print 21/7/2025
	}
}