Schma de concpetion Abstract Factory Exemple Sylvain Giroux
Schéma de concpetion Abstract Factory Exemple Sylvain Giroux
Problème § Vos clients sont américains et français. § les américains tiennent mordicus à travailler avec des mesures en système impérial § les français tiennent absolument au système métrique. § Implémentez un programme qui garantisse aux utilisateurs de ne travailler que dans un seul des deux systèmes de mesure. § Le système de mesure à utiliser sera spécifié dans un fichier de propriétés.
L’interface abstraite sur la famille de produits public interface Measure { String get. Units(); Number get. Value(); Measure add(Measure qty); Measure substract(Measure qty); Measure convertir(String units); }
La famille métrique public interface Measure. Metric extends Measure { public static String MILLILITRES = "ml"; public static String LITRES = "l"; public static String MILLIGRAMMES = "mg"; public static String GRAMMES = "g"; }
public class Measure. Metric. Impl implements Measure. Metric { public Measure. Metric. Impl(Number n, String u) {. . . } public String get. Units() {. . . } public Number get. Value() {. . . } public Measure add(Measure qty) { Measure m 2 = m 2. convertir(this. get. Units()); return new Measure. Metric. Impl( this. get. Value(). + m 2. get. Value(), this. get. Units()); } public Measure substract(Measure qty) {. . . } }
public class Measure. Factory { public Measure get. Volume(Number n, String u) { Program. Properties props = Program. Properties. get. Instance(); if (props. get. Property("measure. system") == "us") return new Measure. USImpl(n, u); return new Measure. Metric. Impl(n, u); } public String get. Volume. Default. Unit() { return null; } public Measure get. Weight(Number n, String u) {return null; } public String get. Weight. Default. Unit(){return null; } }
- Slides: 6