Joh*_*nes 5 java oop design-patterns
细分尽可能简单:
是否存在以下场景的设计模式(名称)?
可能有许多通用的生成器可用于实现IGenerator接口,但也有一些依赖于国家的接口(扩展GeneratorBase).后者可以封装依赖于国家/地区的生成器以及与国家无关的生成器,具体取决于要保存实现的"SomeType"的类型.Mehtod init()旨在覆盖包含可用生成器的注册/映射过程.
抽象类GeneratorBase提供了为特定类型的"SomyType"关联和查找生成器的功能.同时,可以存在IGenerator实现,它们既不知道"SomeType"也不知道国家.
旁注:所有可用(不可用!)生成器都保存在一个单独的注册表类中,该类负责查找正确的IGenerator实现.
客户端/用户获得的唯一接口是IGenerator接口.
public interface IGenerator
{
public String generate(SomeType s);
}
public abstract class GeneratorBase implements IGenerator
{
private Map generators;
protected String country;
public GeneratorBase(String country){
generators = new HashMap();
this.country = country;
init();
}
public abstract void init();
public String generate(SomeType s)
{
Generator gen = (Generator) generators.get(new Integer(s.getObjectType()));
...
return gen.generate(s);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我遇到了适配器模式,桥接模式和装饰模式.它们都不适合这种设置.最接近的可能是适配器或桥接模式,但我既不调整东西,也不桥接(抽象类实现与实现者完全相同的接口)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |