Epifyte - PendulumProject2020/PendulumProject GitHub Wiki
Version: 0.1.9+
public class Epifyte extends Agent
This class belongs to the fairyChessPack1
package. This class belongs to the Metaphysical layer.
Piece Properties:
- Class Hierarchy:
Piece > ObjectPiece > Agent > Epifyte
- Possible Fits:
Chronos-Agent/_OBJECTMEGASLOT
- Method Piece Slots:
"BINDINGVALIDITYEVALUATORSLOT", "DETACHMENTVALIDITYEVALUATORSLOT", "EVENTINTERPRETERSLOT"
- Object Piece Slots:
(none)
- Dependent Piece Names:
"EpifyteModifier", "EpifyteArm"
The Epifyte piece is a major part of the metaphysical basis of the project (see also: Epifyte Model).
The Epifyte is a highly flexible object, allowing the modification and differentiation of its behaviors to a large extent. This is due to the fact that its behaviors are contained in Functional Interfaces, while its methods are programmed to invoke the said Functional Interfaces instead of carrying out the actions directly. There are more specific types of Epifytes:
- The EpifyteModifier, which handles information and carries out the process of information propagation as well as command propagation.
- The EpifyteArm, a more specific type of EpifyteModifier which handles commands.
As well as one more type of Epifyte that has yet to be programmed:
- The EpifyteTrap, which reacts to events such as binding and unbinding.
private String label
A name given to the Epifyte, used to identify it. Usually not required.
private ArrayList<String> tags
Tags specifying what kind of Epifyte this is. Used by other epifytes to find the one relevant to some situation.
private ArrayList<Epifyte> upper
The collection of all Epifytes binding to this Epifyte.
private ArrayList<EpifyteModifier> upperModifiers
The collection of all EpifyteModifiers binding to this Epifyte.
private ArrayList<EpifyteArm> upperArms
The collection of all EpifyteArms binding to this Epifyte.
private ArrayList<Epifyte> lower
The collection of all Epifytes that this Epifyte binds to.
private BindingRequesterJudge bindingRequesterJudge
A functional interface that gives a trilean expression indicating whether or not this epifyte is allowed to bind to another epifyte.
private BindingRespondentJudge bindingRespondentJudge
A functional interface that gives a trilean expression indicating whether or not another epifyte is allowed to bind to this epifyte.
private DetachmentRequesterJudge detachmentRequesterJudge
A functional interface that gives a trilean expression indicating whether or not this epifyte is allowed to unbind from another epifyte.
private DetachmentRespondentJudge detachmentRespondentJudge
A functional interface that gives a trilean expression indicating whether or not another epifyte is allowed to unbind from this epifyte.
private CommandPropagationPermissionJudge commandPropagationPermissionJudge
A functional interface determining whether this epifyte propagate the command and if possible, handle it, or stop the propagation of command.
private InformationPropagationPermissionJudge informationPropagationPermissionJudge
A functional interface determining whether this epifyte propagate the information and if possible, handle it, or stop the propagation of information.
private static Map<String, EpifytePrototype> epifyteCreationProtocol
A Map that stores EpifytePrototypes, which are functional interfaces that create Epifytes.
public Epifyte()
Creates an Epifyte and sets all the functional interface fields to a default value as provided by the static methods of this class.