框架开发的技术和方法
1.通用点(技术)
通用点代表业务应用中反复出现的通用主题的位置。
只要差异不大,你依然可以把这个主题作为通用点;只是,需要通过参数化或配置设置项的方法,来处理这些小的变化。
将通用点主题移到框架组件中的实际工作并不困难,困难的是在分析阶段,如何从尚未开发的业务应用中识别出那些通用点。
每个业务应用都有其独特性;多个应用之间,既存在大量通用点,又会因每个应用的本质不同,而存在大量显著不同之处。因此,应用中可能有通用主题,也有显著的变化(variation)和客户化(customization)。为了保证在上述两种情况下,应用开发者都能利用框架,你作为框架设计者,也需要考虑这些变化的点。
2.扩展点(技术)
在扩展点中,框架除安置了一个空的占位符之外什么也没有实现,这个占位符以后会被基于框架之上构建的业务应用填上客户化的实现。
如果框架内有太多不必要的扩展点,将导致应用开发团队额外的编码工作量;如果扩展点太少,框架的灵活性就差。
A.继承 Inheritance Approach
a.钩子 hook method
抽象方法对应用开发和框架开发都是非常重要的概念。
b.模版 template method
模板方法强调的是不同对象及方法之间如何协作。
方法实现了的是模版?未实现的是抽象?(或者基类是抽象,实现是模版?)这一段真糟糕!
B.组合 Composition Approach
将扩展点定义为一组接口(interface),让这组接口和框架进行妥善的交互。
a.可插入组件 Pluggable Component
框架中定义一个接口,并使用接口的逻辑,应用中定义接口的实现类,并将类传递给框架使用。
3.白盒框架(方法)
白盒框架是由抽象类组成的框架。开发者使用白盒框架时,要继承框架中的抽象类来建立一个具体类。白盒框架使用继承法支持扩展点。
缺乏灵活性。整个处理流程已经固定了。
白盒框架的另一个缺点是,它通常要求开发者了解很多框架组件的实现细节。
4.黑盒框架(方法)
黑盒框架由直接可用的具体类组成。
继承已存在的框架组件来达到客户化的目的,通过组合很多组件来达到预期目的。
黑盒框架可能包含很多通用点,它借助组合法来支持扩展点。
它由隐藏了内部实现的组件组成。
开发者必须熟悉更多组件以及它们的使用。
5.灰盒框架(方法)
当我们选择继承法、组合法或是两者组合的时候,我们应当牢记权衡每种方法的性能、维护成本和易用性。
性能角度讲,组合法往往比继承法慢。
6.设计模式(技术)
设计模式描述了软件设计的共性问题的解决方案,有助于你解决开发应用框架中的一些共性问题。
策略模式(Strategy):处理应用中算法变化的设计。
桥接模式(Bridge):解耦(decouple)应用中抽象和实现的设计。
装饰模式(Decorator):提供处理数据的层次方法的设计。
观察者模式(Observer):提供订阅-分发通信模型的设计。
中介者模式(Mediator):阻止多个对象显式相互调用的设计。
模板方法模式(Template method):提供算法骨架的设计。
访问者模式(Visitor):定义新操作而不改变旧操作的设计。
单件模式(Singleton):确保类只创建一个实例(instance)的设计。
抽象工厂模式(Abstract factory):提供创建对象族的接口而无须指定具体类的设计。
想掌握设计模式真的是不容易呀,这些东西还需要仔细研究。现在最麻烦的是很多名词,明明没多大区别,非要弄个新的名词出来,让我等初学者如坠云里雾里!
1.通用点(技术)
通用点代表业务应用中反复出现的通用主题的位置。
只要差异不大,你依然可以把这个主题作为通用点;只是,需要通过参数化或配置设置项的方法,来处理这些小的变化。
将通用点主题移到框架组件中的实际工作并不困难,困难的是在分析阶段,如何从尚未开发的业务应用中识别出那些通用点。
每个业务应用都有其独特性;多个应用之间,既存在大量通用点,又会因每个应用的本质不同,而存在大量显著不同之处。因此,应用中可能有通用主题,也有显著的变化(variation)和客户化(customization)。为了保证在上述两种情况下,应用开发者都能利用框架,你作为框架设计者,也需要考虑这些变化的点。
2.扩展点(技术)
在扩展点中,框架除安置了一个空的占位符之外什么也没有实现,这个占位符以后会被基于框架之上构建的业务应用填上客户化的实现。
如果框架内有太多不必要的扩展点,将导致应用开发团队额外的编码工作量;如果扩展点太少,框架的灵活性就差。
A.继承 Inheritance Approach
a.钩子 hook method
抽象方法对应用开发和框架开发都是非常重要的概念。
b.模版 template method
模板方法强调的是不同对象及方法之间如何协作。
方法实现了的是模版?未实现的是抽象?(或者基类是抽象,实现是模版?)这一段真糟糕!
B.组合 Composition Approach
将扩展点定义为一组接口(interface),让这组接口和框架进行妥善的交互。
a.可插入组件 Pluggable Component
框架中定义一个接口,并使用接口的逻辑,应用中定义接口的实现类,并将类传递给框架使用。
3.白盒框架(方法)
白盒框架是由抽象类组成的框架。开发者使用白盒框架时,要继承框架中的抽象类来建立一个具体类。白盒框架使用继承法支持扩展点。
缺乏灵活性。整个处理流程已经固定了。
白盒框架的另一个缺点是,它通常要求开发者了解很多框架组件的实现细节。
4.黑盒框架(方法)
黑盒框架由直接可用的具体类组成。
继承已存在的框架组件来达到客户化的目的,通过组合很多组件来达到预期目的。
黑盒框架可能包含很多通用点,它借助组合法来支持扩展点。
它由隐藏了内部实现的组件组成。
开发者必须熟悉更多组件以及它们的使用。
5.灰盒框架(方法)
当我们选择继承法、组合法或是两者组合的时候,我们应当牢记权衡每种方法的性能、维护成本和易用性。
性能角度讲,组合法往往比继承法慢。
6.设计模式(技术)
设计模式描述了软件设计的共性问题的解决方案,有助于你解决开发应用框架中的一些共性问题。
策略模式(Strategy):处理应用中算法变化的设计。
桥接模式(Bridge):解耦(decouple)应用中抽象和实现的设计。
装饰模式(Decorator):提供处理数据的层次方法的设计。
观察者模式(Observer):提供订阅-分发通信模型的设计。
中介者模式(Mediator):阻止多个对象显式相互调用的设计。
模板方法模式(Template method):提供算法骨架的设计。
访问者模式(Visitor):定义新操作而不改变旧操作的设计。
单件模式(Singleton):确保类只创建一个实例(instance)的设计。
抽象工厂模式(Abstract factory):提供创建对象族的接口而无须指定具体类的设计。
想掌握设计模式真的是不容易呀,这些东西还需要仔细研究。现在最麻烦的是很多名词,明明没多大区别,非要弄个新的名词出来,让我等初学者如坠云里雾里!