배운 것을 정리합니다.

배운 것을 정리합니다. 개발도, 학교 수업도, 기타 등등....
개발
학부
전체
All
flutter
OOP
Java
오브젝트: 코드로 이해하는 객체지향설계
1장 객체 설계 5장 책임할당하기 5.3 구현을 통한 검증. 코드로 적어보니 다음과 같은 개선 사항이 존재한다. DiscountCondition은 3가지 이유로 변경될수 있다. 새로운 할인조건 추가로 인한 isSatisfiedBy 메소드의 조건 추가 isSatisfiedBySequence의 로직 변경 isSatistfiedByPeriod의 로직 변경 하나의 클래스가 여러가지 변경이유를 가진다는 것은 단일 책임의 원칙(SRP)의 위배되며 높은응집도를 달성하지 못했다고 볼수 있다. 그러므로 변경의 이유에 따라 클래스를 분리하자. 변경의 이유를 쉽게 파악하기 꿀팁! 인스턴스 변수의 초기화 시점이 다른 부분을 분리의 후보로 잡아보자. 인스턴스 변수 사용의 방식을 살펴보자. 모든 속성을 다 사용하면 응집도가 높은거다! 이렇게 나눈다면 PeriodCondition과 SequenceCondition두개의 클래스가 나뉘지만, Movie는 두가지 클래스와 협력해야한다. 이건 전체적인 결합도도 높아지고(Movie가 Condition 1개에서 각각의 2개로 결합이 늘어남),변경이 더 어려워져서(새로운 할인조건 추가시 List 인스턴스 추가해야하고 판별 메서드도 추가해야함) 설계 품질이 나빠진거다. Movie 입장에서는 두 클래스 모두 같은 책임을 수행한다. 구현방식의 차이일 뿐이므로 ‘역할’이 등장한다. 자바에서는 이를 구현하기위해 추상클래스(구현을 공유)와 인터페이스(책임만 정의)를 사용한다. POLYMORPHISM 패턴 객체에 타입에 따라 변하는 로직이 있다면 조건문보다는 다형성을 이용하자. PROTECTED VARIATIONS 패턴 변경될 가능성이 높다면 캡슐화해서 예측가능한 안정적인 인터페이스 뒤로 숨기자.
  1. OOP
  2. Java
  • 예준천
Flutter 오답노트
ListTile의 Leading이 가운데 정렬되지 않는 문제 이거로 해결되는줄 알았으나… 결론 In Flutter's ListTile, the leading and trailing doesn't span accross the full height of the ListTile when subtitle is used. Hence create your own Widget using row. CustomListTile 위젯을 만들거나 Row로 해결하는 것이 바람직함. flutter StatefulWidget의 LifeCycle createState State를 생성하고 StatefulWidget에서 state를 실행합니다. initState State를 초기화합니다. 단, initState는 StatefulWidget이 실행되면 단 한번 동작합니다. initState 내부를 수정하고 싶다면 rebuild, hot-reload를 해도 변화가 없으므로 반드시 종료 후 실행시켜야 합니다.
  1. flutter
  • 예준천