클린 아키텍처 - 설계 원칙
SRP
- 
콘웨이 법칙
시스템을 설계하는 조직은 필연적으로 해당 조직의 커뮤니케이션 구조를 복제한 설계물을 만들게 된다
 - 
단일 모듈은 변경의 이유가 하나, 오직 하나뿐이어야 한다.
 - 
하나의 모듈은 하나의, 오직 하나의 사용자 또는 이해관계자에 대해서만 책임져야 한다.
 - 
하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다.
 
우발적 중복
class Employee {
	// 회계팀, CFO 보고용
  	calculatePay(){		
    	...
      	regularHours();
      	...
    }
	// 인사팀, COO 보고용
  	reportHours(){
	    ...
      	regularHours();
      	...
    }		
    // DBA, CTO 보고용
  	save(){
    
    }			
}
병합
class Employee {
  	constructor({name, duty}){
    	this.name=name;
      	this.duty=duty;	//duty의 타입이 string->int(type)
    }
	// 회계팀, CFO 보고용
  	calculatePay(){		
    	
    }
	// 인사팀, COO 보고용
  	reportHours(){
	    //수정
    }		
    // DBA, CTO 보고용
  	save(){
    	//수정
    }			
}
해결책
class PayCalculator {
	constructor({employee}){
    	this.employee=new EmployeeData(employee);
    }
}
class HourReporter {
	constructor({employee}){
    	this.employee=new EmployeeData(employee);
    }
}
class EmployeeSaver {
	constructor({employee}){
    	this.employee=new EmployeeData(employee);
    }
}
class EmployeeData(){
	constructor({name, duty}){
    	this.name=name;
      	this.duty=duty;
    }
}
/* Complex parts */
class CPU {
	public void freeze() { ... }
	public void jump(long position) { ... }
	public void execute() { ... }
}
class Memory {
	public void load(long position, byte[] data) {
		...
	}
}
class HardDrive {
	public byte[] read(long lba, int size) {
		...
	}
}
/* Façade */
class Computer {
	public void startComputer() {
        CPU cpu = new CPU();
        Memory memory = new Memory();
        HardDrive hardDrive = new HardDrive();
		cpu.freeze();
		memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE));
		cpu.jump(BOOT_ADDRESS);
		cpu.execute();
	}
}
/* Client */
class You {
	public static void main(String[] args) throws ParseException {
		Computer facade = /* grab a facade instance */;
		facade.startComputer();
	}
}
OCP
사고 실험
- 재무제표를 보여주는 시스템
- 데이터를 계산- 데이터를 표현
 
 
방향성 제어
정보 은닉
Author And Source
이 문제에 관하여(클린 아키텍처 - 설계 원칙), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@monkb/클린-아키텍처-설계-원칙저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)