Adapter pattern(Wrapper pattern), is a design pattern that allows classes to work together, those classes can not work normally because they have incompatible interface.
For example, you travel from US to China, you need to use an adapter so that you charger can work, because they have different standard.
“The adapter is created by implementing or inheriting both the interface that is expected and the interface that is pre-existing. It is typical for the expected interface to be created as a pure interface class, especially in languages such as Java that do not support multiple inheritance”
(http://en.wikipedia.org/wiki/Adapter_pattern)
Adapter contains an instance of the class it wraps, so that the adapter can delegate the request to warped instance.
适用情景: 假如有一组相关的算法, 客户需要从中动态选择一个来使用. 譬如: 学校中的新生分班, 有按照成绩分班, 按照性别分班, 按照住宿类型分班等等. (当然实际情况中的分班考虑因素会更复杂一些)
最简单的方法是一个Method, 通过判断类型进行相应操作. 但这样做的是这个Method会巨大无比, 不易维护. 因此我们可使用Strategy模式, 会多一些Interface或Class, 但会降低耦合, 拥有更佳的可扩展性.
负责进行分班的主体类包含IClassEnrollStrategy的一个Instance, 对于这个Instance可以使用以下方式注入:
1. 使用Constructor注入到ClassEnroll中, 可在ClassEnroll中增加一个Constructor:
ClassEnroll(strategy:IClassEnrollStrategy)
2. 使用Setter注入. ClassEnroll中对strategy的Setter方法:
setStrategy(strategy:IClassEnrollStrateStrategy)
3. 在ClassEnroll使用工厂模式创建IClassEnrollStrategy实例.
书很好, 层次清晰, 语言简练. 只是我英语太差, 读的稍稍有些吃力. 把自己理解的记录一下, 即便是错误的, 也先记录下来.
这个是最困惑我的一个词语.
一般来讲, Domain指一个领域, 譬如Product, Student. 用户的需求一般为Domain, 用户需求中的名词多为Class, 用户需求的限制多为逻辑.
Unit of Work有两个要素:
1. 有多个Work
2. 多个Work同一个Transation, 全部成功或全部失败.
将从DataBase中读取出来的对象放在一个Map中, 需要使用对象时, 先检查Map中是否存在, 不存在的情况下才去从DataBase读取.
用Object来代替SQL, EJB SQL语句, 可以增加Cache以及时间控制等
Knowledge Level’s Knowledge Level.
例如, 一个Table中的某个Record 是一个 Operation Level, 则对应Column为该Record的Knowledge Level, 而该Column的属性描述,则为MetaData.
通过使用Service Layer来划分软件层次, 达到降低耦合的要求.
每个Layer不必提供过多服务, 而应当提供恰当的服务, 以降低开发,维护的复杂度. 类似与日常生活中组织机构的管理.一般来说,可以以此通过Project, Source Folder, Package, Class来划分Service Layer.
…..
这本书太高深了, 只能高山仰止了…
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.