Sounds like functions is what I want...
you can certainly write an "output function", so whenever you want to send-out (or change) a pattern, you pass the pattern to the function and call the function instead of duplicating digitalWrite every time you want to turn on/off an LED.
Besides functions, loops
are another way to make your code "smaller". If you are doing something over-and-over, write a loop, rather than repeating the code over-and-over. And, it doesn't have to do exactly the same thing every time throught the loop.
Variables can change, and you can have if-statements to change what the loop is doing. As a simple example, the 1st time through the loop, you could write a "0" to pin one. The next time through the loop, you could write a "1" to pin 4. ...And, if it's going through that same loop and more than 1000mS have passed, it can toggle the state of pin 13, etc., etc...
If there is some "logic", or "order", or "repetition" to these patterns, your code may be able to "generate" the patterns when needed, and you won't have to "store' the ones you are not using at the moment.
I'm sure your project is different from mine, but I just finished a "blink-sequence to the music" project, and I don't store any patterns.
Sometimes I'll write zero's or one's to get a "starting point" and other times I'll generate and "shift-in" a starting-pattern. Other times, it's random, or the pattern is generated depending on the loudness or beat. At most, I sometimes need to "save" a few bits that have shifted/sequenced-off the end of the display, so I can sequence them back in...BTW -
My project took-up about 9K of the 32K available. I'm only using 7 "channels" (7 output pins) because I have, eight strings of 7-lamps each that I need to control. But, there are 10 different "modes" and variations of each mode, for hundreds of overall variations. For example, all of the modes can be inverted or reversed... One of the modes is a VU meter effect. It can go left-to-right or right-to-left, and/or it can be inverted (so that louder-sound turns-off the lamps, instead of turning them on). The revese/invert options is a feature of my "output function", so with a few additional lines of code I have 4 times as many variations of all the patterns/modes. A few of the modes can use random patterns, so with 7 lamps I get 127 variations of those modes... I'm just saying that it's possble to get lots of patterns without storing them in memory.