Eine Art Daten, die über Hardwaregeräte übertragen werden, verwendet ein spezielles Format. Der erste Absatz ist die ID und der letzte Absatz sind die Daten
Der vorherige Absatz stellt dar, um welche Art von Daten es sich handelt, z. B. A, B, C usw.
Gemäß dem vorherigen Typ nehmen wir bestimmte Ziffern von der Rückseite. Für Typ A benötigen wir beispielsweise 1-3 Ziffern an Daten und für Typ B benötigen wir die 20. und 22. Ziffer.
Beim Entwerfen müssen nur noch die Kategorien a und b akzeptiert werden. Wenn Sie jedoch in Zukunft die Kategorien c, d usw. akzeptieren möchten, werden die Vorgänge für die Daten beispielsweise unterschiedlich sein. Kategorie A muss 1-3 Ziffern multiplizieren. 2. Addiere 1 zur 20. Ziffer von Kategorie B, und die 22. Ziffer bleibt unverändert z
Die Frage ist, wie sollte es gestaltet sein, um eine zukünftige Expansion zu ermöglichen? Ich möchte zum Beispiel Klasse D unterstützen, ohne den Code neu zu schreiben....
复杂的话用策略模式,不复杂的直接OO的继承,不同类型的消息交给不同的子类去处理。
应该把数据协议格式规定好:例如:高3位代表类型,中间2位代表协议版本,后面代表数据。
协议规定好后,通过模板方法来处理,将具体解析放到子类,通用的放到父类。
这样在扩展时,不需要改动原有代码,只需要写新的实现就可以。
根本用不到设计模式,传统的继承就可以,各个子类分别取不同的字段就可以。
如果一定要使用设计模式,可以考虑一哈策略模式
还需要判断一下后续的使用者,工厂模式,策略模式,代理模式可能都能满足你扩展的需求,其实重要的是想法,遵照六原则设计吧,没必要非要套某一个模式,根据需求,代码慢慢演变,最后可能自然的就符合某个模式了,也可能是多种模式的组合。