Teknologi kräver ofta mjukvara, vilket också behöver en design. Inom programmering brukar man ofta ha en strukturell design av programkoden, som också kallas designmönster för mjukvara eller “software design pattern” på engelska. Anledningen till att man använder designmönster är att det underlättar för programmeraren som inte behöver “återuppfinna hjulet” varje gång denne ska skapa en ny programvara. Om det redan finns ett bra designmönster för just den mjukvara man ska programmera, går det bra att använda den i stället för att själv försöka designa en egen struktur. Det är också lätt att ha ett gemensamt språk för olika lösningar och problem när man diskuterar kod och systemdesign med andra i programmeringsteamet. Här nedan följer ett antal vanliga designmönster inom programmering.
Singleton
Singleton-mönstret används för att lämna skapandet av en klass till endast ett objekt. Det är en fördel, eftersom det då bara är ett objekt som kan driva förändringar i systemet. Man ser till att endast ett objekt kan skapas genom att göra konstruktorn privat i den klass som ska vara singleton. Det leder till att endast medlemmar av den klassen kan komma åt den privata konstruktorn.
Factory
Factory-mönstret är nämnd efter engelskans namn för “fabrik”, och det handlar lite om samma sak. En mjukvara med factory-mönstret skapar objekt, genom att man kallar på en factory-metod, i stället för att kalla på en konstruktor som man annars brukar göra för att skapa objekt.
Strategy
Strategy-mönstret gör att man kan lägga ihop olika algoritmer under en och samma abstraktion. Man kan då byta ut en algoritm mot en annan, och behöver inte implementera en algoritm. Koden får i stället instruktioner för vilken grupp av algoritmer som ska köras vid runtime.
Observer
Observer-mönstret är ett sätt att förenkla för programmeraren. Man definierar här ett en-till-många-förhållande, så att när ett objekt får förändringar i sitt tillstånd, kommer alla objekt som är beroende av detta första objekt att uppdateras. De andra objekten observerar alltså det första efter förändringar.