Simplicity is the essence of happiness. - Cedric Bledsoe
将“请求”封装成对象,以便对命令进行管理。使用不同的请求、队列或者日志来参数化其他对象 角色:   1、命令(Command):为所有命令声明了一个接口。调用命令对象的 execute()方法,就可以让接收者进行相关的操作。这个接口也具备一个 undo() 方法。 2、具体命令(ConcreteCommand):实现命令接口,定义了动作和接收者之间的绑定关系。调用者只要调用 execute() 就可以发出请求,然后由 ConcreteCommand 调用接收者的一个或多个动作。 3、请求者(Invoker):持有一个命令对象,有一个行动方法,在某个时间点调用命令对象的 execute() 方法,将请求付诸实行。 4、接收者(Receiver):接收者知道如何进行必要的动作,实现这个请求。任何类都可以当接收者。 5、客户端(Client):创建一个具体命令(ConcreteCommand)对象并确定其接收者,包括把其他角色串连在一起。 实现代码 class ConcreteCommand implements Command { private...
发布于 4 years ago
24753
关联该模式定义了对象之间的一对多的依赖关系以便当一个对象改变状态时所有依赖于它的对象都得到通知并自动刷新 ConcreteObserver(具体的观察者) This class maintains a reference to a ConcreteSubject object, stores state that should stay(保持) consistent(一致的) with the subject's and implements the Observer updating interface to keep its state consistent with the subject's. (这类维护了一个ConcreteSubject对象的引用,存储状态应和主题的状态保持一致,并为了保持其状态和主题的状态一致而实现观察者更新界面。) ConcreteSubject(具体的主题) This class stores the state of interest to ConcreteObserver objects and sends...
发布于 5 years ago
24178
(这个模式定义了一系列的算法,封装每一个,而且使它们还可以相互替换。它允许客户使且它时,算法可以独立的变化 ConcreteStrategyC(策略C)This class implements the algorithm using the Strategy interface. (这个类实现了该使用策略接口中的算法。) ConcreteStrategyB(策略B)This class implements the algorithm using the Strategy interface. (这个类实现了该使用策略接口中的算法。) ConcreteStrategyA(策略A)This class implements the algorithm using the Strategy interface. (这个类实现了该使用策略接口中的算法。) Stragey(策略)This class declares an interface common to all supported algorithms. Context uses t...
发布于 5 years ago
25129
这种模式提供了一个接口来创建一系列相关或相互依赖对象而无需指定它们具体的类 Client(客户端) This class uses only interfaces declared by AbstractFactory and AbstractProduct classes. (这个类只使用AbstractFactory和AbstractProduct类声明的接口。) ProductB1(产品B1) This class (a) defines a product object to be created by the corresponding concrete factory, and (b) implements the AbstractProduct interface. (这类(a)定义了一个由相应的具体工厂创建的产品对象,和(b)实现了AbstractProduct接口。) ProductB2(产品B2) This class (a) defines a product object to be created b...
发布于 5 years ago
214610
这个模式中,给定一门语言,定义了其语法的表示以及一个解释器,该解释器会使用该表示来解释语言中的句子 NonTeminalExpression(非终端表达式)This class maintains(维护) instance variables of type AbstractExpression for each symbol(符号) in a rule, and implements an Interpret operation for nonterminal(非终结) symbols in the grammar(语法). (这类为在一个规则的每个符号维护AbstractExpression类型的实例变量,实现了一个为语法中的非终结符号的解释操作。) TeminalExpression(终端表达式)This class implements an Interpret operation associated([ə'səuʃi,eitid] 相关的) with terminal symbols in the grammar. (这类实现一个与语法中...
发布于 5 years ago
21818
这种模式避免请求的发送者和接收者之间的耦合,通过给超过一个对象一个机会来处理请求。 它链接所有接收者对象并将请求沿着链到一个对象处理它 部件 ConcreteHandler2:(具体处理器2) This class (a) handles requests it is responsible for, (b) can access its successor, and (c) if it can handle the request, does so, else it forwards it to its successor. 这类(a)处理它负责的请求,(b)可以访问其继任者,(c)如果它可以处理请求,这样做,否则它将其转发给它的继任者。 ConcreteHandler1:(具体处理器1) This class (a) handles requests it is responsible for, (b) can access its successor, and (c) if it can handle t...
发布于 5 years ago
22339
矛盾的这种模式转换一个类的接口到客户期望的另一个接口适配器使原本不兼容的而不能在一起工作的那些类可以在一起工作 Client(客户端) This class collaborates( [kə'læbəreit] 合作) with objects conforming to the Target interface. (这类为目标接口提供对象一致性合作。) Adapter(适配器) This class adapts(适应) the interface of Adaptee(被适配者) to the Target interface. (这类适应被适配者的接口到目标接口。) Adaptee(被适配者) This class defines an existing interface that needs adapting. (这个类定义了一个现有的接口,需要适应。) Target(目标) This class defines the domain-specific interface that Client...
发布于 5 years ago
26700
从而公开表示法这种模式提供了一种方法来访问聚合对象的元素从而无需公开其底层表示法 ConcreteIterator(具体迭代器) This class (a) implements the Iterator interface and (b) keeps track of the current position in the traversal(遍历) of the aggregate(集合). (这类(a)实现了迭代器接口和(b)在遍历的集合中,跟踪当前位置。) Iterator(迭代器) This class defines an interface for accessing and traversing(遍历) elements. (这个类定义了一个接口来访问和遍历元素。) ConcreteAggregate(具体的集合) This class implements the Iterator creation interface to return an instance of the proper Concrete...
发布于 5 years ago
27733