객체지향 설계 5원칙 1. SRP (Single Responsibility Principle) : 단일 책임의 원칙 - 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임만을 가져야 함 - 응집도는 높게 결합도는 낮게 설계해야 한다 - 한 객체에 책임(기능)이 많아질수록 내부 함수끼리 강한 결합을 발생할 가능성이 높아짐 - 시스템에 수정이 생기면 수정과 관련 없는 기능에 영향을 미칠 수 있고 모두 테스트해야 하는 일이 발생 - 위와 같은 문제점에서 벗어나면 소스의 재사용 및 가독성이 좋아짐 2. OCP (Open-Closed Principle) : 개방-폐쇄 원칙 - 확장에 대해 개방되어 있고, 수정에 대해 폐쇄되어 있는 원칙 - 변경되는 소스를 파악하고, 수정 시 영향받지 않게 해야 함 - 이..

String vs StringBuffer vs StringBuilder String - 문자열 삽입, 삭제, 수정이 많지 않을 때 사용하기 적합 - 불변(immutable) 객체 - 문자열이 수정될 때마다 새로운 객체가 Heap에 생성됨 - 불변성을 가지므로 멀티 스레드 환경에서 안전 (Thread-Safe) StringBuffer - 가변(mutable) 객체 - 문자열 삽입, 삭제, 수정이 빈번하게 발생 시 사용하기 적합 - synchronized 키워드를 사용하여 멀티 스레드 환경에서 안전 (Thread-Safe) StringBuilder - 가변(mutable) 객체 - 문자열 삽입, 삭제, 수정이 빈번하게 발생 시 사용하기 적합 - 동기화를 지원하지 않음 - 단일 스레드의 성능이 StringBu..

String vs StringBuffer vs StringBuilder String - 문자열 삽입, 삭제, 수정이 많지 않을 때 사용하기 적합 - 불변(immutable) 객체 - 문자열이 수정될 때마다 새로운 객체가 Heap에 생성됨 - 불변성을 가지므로 멀티 스레드 환경에서 안전 (Thread-Safe) StringBuffer - 가변(mutable) 객체 - 문자열 삽입, 삭제, 수정이 빈번하게 발생 시 사용하기 적합 - synchronized 키워드를 사용하여 멀티 스레드 환경에서 안전 (Thread-Safe) StringBuilder - 가변(mutable) 객체 - 문자열 삽입, 삭제, 수정이 빈번하게 발생 시 사용하기 적합 - 동기화를 지원하지 않음 - 단일 스레드의 성능이 StringBu..

1. Interface를 이용하는 방법 2. Bundle 객체를 생성해서 Fragment의 전달인자로 보내는 방법 3. requireActivity()를 전달인자로 사용한 ViewModel을 공유하는 방법 4. requireParentFragment()를 전달인자로 사용한 ViewModel을 공유하는 방법 1. Interface를 이용하는 방법 activity_main.xml fragment_parent.xml fragment_child.xml FragmentListener.kt package com.jwsoft.kotlinproject interface FragmentListener { fun onReceivedData(data: String) } MainActivity.kt package com.jw..

1. Interface를 이용하는 방법 2. ViewModel을 공유하는 방법 1. Interface를 이용하는 방법 fragment_red.xml fragment_green.xml activity_main.xml FragmentListener.kt package com.jwsoft.kotlinproject interface FragmentListener { fun onReceivedData(data: String, fragment: String) } FragmentRed.kt package com.jwsoft.kotlinproject import android.content.Context import android.os.Bundle import android.view.LayoutInflater impo..

1. Interface를 이용하는 방법 2. ViewModel을 공유하는 방법 1. Interface를 이용하는 방법 fragment_red.xml fragment_green.xml activity_main.xml FragmentRed.kt package com.jwsoft.kotlinproject import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import kotlinx.android.synthetic.main.fragment..

1. onAttach()에서 Context 파라미터를 이용하여 Activity 객체를 생성하는 방법 2. Bundle 객체를 생성해서 Fragment의 전달인자로 보내는 방법 3. ViewModel을 공유하는 방법 1. onAttach()에서 Context 파라미터로 Activity 객체 생성하여 전달받는 방법 activity_main.xml fragment_red.xml fragment_green.xml FragmentGreen.kt package com.jwsoft.kotlinproject import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View imp..

1. Intent(+Serializable, Parcelable) 이용하는 방법 2. startActivityForResult 이용하는 방법 1. Intent(+Serializable, Parcelable) 이용하는 방법 SerializablePrivacy.kt package com.jwsoft.kotlinproject import java.io.Serializable class SerializablePrivacy( var height: Int, var weight: Int ) : Serializable ParcelableDetail.kt package com.jwsoft.kotlinproject import android.os.Parcel import android.os.Parcelable class ..

참조(Reference)와 GC(Garbage Collection)의 관계 1. Strong Reference public class JavaTest { public static void main(String[] args) { MyClass obj = new MyClass(); obj = null; // "obj" object is no longer referencing to the instance. // So the "MyClass" type object is now available for garbage collection. } } class MyClass { } // Java program to illustrate Strong reference class MyClass { //Code.. } pub..
- Total
- Today
- Yesterday
- 안드로이드 #코틀린 #Android #Kotlin
- 안드로이드
- CoordinatorLayout
- XML
- Vue.js #Vue.js + javascript
- 혀가 길지 않은 개발자
- coroutine
- ViewPager2
- Architecture Pattern
- MVVM
- 자바
- View
- Android
- Kotlin
- activity
- James Kim
- java
- fragment
- DataBinding
- Intent
- TabLayout
- Livedata
- ViewModel
- ArrayList
- 코틀린
- Design Pattern
- JSONArray
- JSONObject
- recyclerview
- handler
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |