In 10 years of software development, I rarely created or encountered the perfect design. I am continually growing and finding new techniques that constantly evolve my architecture. Seams are places where behavior can be altered without editing any code where the behavior is used. Seams allow the architecture to evolve as the system grows by creating areas that can easily be altered. In this talk, we will cover techniques and patterns to create seams in your architecture. We will start with how classes should interact with one another progressing towards system integrations. Intended for developers of all experiences levels, the techniques learned can be used immediately to effectively create seams in applications.
3. MERRIAM-
WEBSTER'
S
1. the joining of two pieces (as of cloth or
leather) by sewing usually near the edge
2. the space between adjacent planks or strakes
of a ship
3. line, groove, or ridge formed by the abutment
of edges
4. a weak or vulnerable area or gap found a
seam
7. public class CPU {
public void Freeze() { ... }
public void Jump(long position) { ... }
public void Execute() { ... }
}
public class Memory {
public void Load(long position, byte[] data) { ... }
}
public class HardDrive {
public byte[] Read(long lba, int size) { ... }
}
8. public class ComputerFacade {
private CPU processor;
private Memory ram;
private HardDrive hd;
public ComputerFacade() {
this.processor = new CPU();
this.ram = new Memory();
this.hd = new HardDrive();
}
public void start() {
processor.freeze();
ram.load(BOOT_ADDRESS, hd.read(BOOT_SECTOR, SECTOR_SIZE));
processor.jump(BOOT_ADDRESS);
process or.execute();
}
}
18. public interface IMap {
string GetLocation(string Address);
}
public class GoogleMaps : IMap {
public string GetLocation(string Address){
// Call google maps
}
}