So where does this leave the blog? Well, I hope to take the blog up again like I was doing before. It’s a positive influence in my life, and I think that I have interesting and fun things to share. It also helps exercise my brain because I have to remember things, write them down, organize graphics, and such. It also encourages me to do things, more things than just lay on the couch and feel bad, because writing about that obviously is a wonderful idea.
The abstract factory class in the link creates other abstract factories. This is much like the Enumeration data type which creates constants/enumerators with specific arguments. Each Abstract Factory is a throw-away object that you can use to create code dynamically for a given factory.
In PHP, keys in an array can only be a string or an integer. However, in many general symbolic programming situations, you may want to be able to associate one piece of data with another. You can establish a link between to pieces of data by setting one as a key and one as a value in an associative array. The Map data type allows you to use any data type as a key and a value.
One interesting note about these interfaces is that both the publisher and the observer include add and detach functions for the other. Usually, observers only have a notify function. Using both of these sets of functions is optional: the only set that must be implemented is on the publisher (to call the observer’s notify).
There are many different kinds of lists in computer programming. Some of them act like heaps of data, some like grocery lines, some like unending rings. Some lists you can only go forward in, some you can go backward as well. Here are some lists that Primus/Falcraft implements.
When you want to find an object you usually start with another object that has an association to it, and use the association to navigate to it. Thus, if you want to find all the orders for a customer, you start with the customer object and use a method on it to get the orders. However, in some cases you won’t have an appropriate object to start with.
A filter is a predicate data structure that compares values against some internal logic to see if they ‘pass through’ the filter or not.
In computer science, a set is an abstract data type that can store certain values, without any particular order, and no repeated values. It is a computer implementation of the mathematical concept of a finite set. Unlike most other collection types, rather than retrieving a specific element from a set, one typically tests a value for membership in a set.
The feature defines a static property for the using class. This static counter remains unique on each poll for a new identity (in this case it’s an integer). The $identityCounter must be ‘increasable’, that is, every time its accessed or ‘advanced’ it must be unique from all the identity values before it. Counting up is a very easy way to accomplish this.
For example, say you want some of your classes to be able to be configured and store configurations. You could have a base class that includes that feature and then, in a single inheritance system like PHP, have all classes inherit from that class so that they can contain default behaviors. The problem with this is that you end up implementing all the class ‘features’ on the base class creating bloat and unneeded complexity in the inheriting classes, particularly if only a subset of the classes inheriting need the feature.
Many individuals see the Singleton Pattern as an anti-pattern. That is, a tool used to make code less optimal. The biggest drawback I can see is in testing in particular. Singletons are not entirely without merit however. There are domains in which a singleton provides a convenient and modular answer. As OODesign.com points out, there may only be need for one window manager, one file system (like the OS X Finder), one print spool, one logging mechanism, one configuration resource, one database access point, etc.
Primus is a collection of libraries/components that are expected to work together to form a general artificial intelligence server/runtime environment. Deployment and application propositions include mobile robotics, information processing, pattern recognition, and social interaction simulations.