CommandPattern을 사용하다 보면 슬롯이 아직 Command객체가 null상태인데 execute()하려는 경우 java.lang.NullPointerException이라는 예외가 발생할 경우가 있다. 이런 경우를 처리하기위해서는 if(onCommands[slot] != null) 과같은 조건문을 통해 걸러주어야한다. 만약 조건문 이외의 다른 처리방법이 있을까? 바로 초기화를 시켜놓는 방법이다. Command라는 인터페이스를 가지는 빈 클래스를(noCommand) 생성하여 모두 이 클래스로 초기화 시켜주는 방법이 있다. for(int i=0; i
Command 패턴 요청을 객체로 캡슐화해주며, 파라미터를 통해 다양한 요청을 처리할 수 있도록 해준다. 또한 요청을 큐에 유지할 수 있으며, 요청에 대한 로그를 유지할 수 있고, 요청 취소 기능도 제공한다. Project : 작업 취소 기능이 있는 선풍기 구현해보기 Command 인터페이스 생성 public interface Command { public void execute(); public void undo(); } Command 인터페이스에 맞춰 프로그래밍할 클래스 생성 CeilingFanHighCommand implements Command{..} CeilingFanLowCommand implements Command{..} CeilingFanMediumCommnad implements Com..
전화번호는 URI형태로 인텐트의 데이터에 포함되어있어서 시스템의 다이얼러에 전달된다. private Button call; private EditText phoneNumber; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); call = (Button) findViewById(R.id.tryCall); phoneNumber = (EditText) findViewById(R.id.phoneNumber); call.setOnClickListener(new Button.OnClickListener() { @Override public ..
안드로이드를 개발하다보면, 어느 버튼에 대해 눌렀을때, 효과를 주고싶은 경우가 있다. 이를 구현하기 위해서는 selector를 이용하면된다. 속성 중 android:state_pressed="true"은 버튼이 눌렸을 때를 나타낸다. 즉, 디폴트로 btn_default이미지가 보이고 눌리게 되면, btn_selected이미지로 바뀌게 된다. 추가로, extendListview에서 눌렀을때 작은 tag이미지를 변경하기위해서는 android:state_pressed="true" 대신에 android:state_expanded="true" 를 써주면 된다.
Tab구현하기 1. 기본탭 구현하기 java public class MainActivity extends TabActivity { TabWidget widget; TabHost host; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); host = getTabHost(); widget = host.getTabWidget(); TabHost.TabSpec spec; spec = host.newTabSpec("Main"); spec.setContent(new Intent(this, First.class)); spec.setIndicator("Main", getIcon(android.R...
1. Singleton public class SerialNumberGenerator { private int count = 0; private SerialNumberGenerator() { } private static class SerialHolder { private static final SerialNumberGenerator serial = new SerialNumberGenerator(); } public static SerialNumberGenerator getInstance() { return SerialHolder.serial; } public int getNext() { return ++count; } } public class SerialNumberGenerator { private ..
고전적인 싱글턴 패턴 구현법 public class Singleton{ private static Singleton single; private Singleton(){} public static Singleton getInstance(){ if(single == null) single = new Singleton(); return single; } //기타메소드 } 위의 고전적인 싱글턴 패턴에는 멀티스레드 환경에서 생성문제가 있다. 가능성은 적겠지만, 스레드환경에 따라 싱글턴으로 만든 객체를 생성할 때 2개이상의 객체가 생성될 수 있다. *멀티스레딩 문제 해결방법* 1. getInstance()의 동기화 public class Singleton{ private static Singleton single;..
자바에서 제공하는 java.util.Observable의 단점 Observable의 단점은 인터페이스가 아닌 클래스이다.어떤 한 클래스가 Obsever Pattern을 적용시키기위해 Observable을 상속받아야한다고치자.부모클래스가 없다면 다행이지만, 부모클래스가 존재한다면 Observable클래스를 상속받을 수 없다.. 이를 해결하기 위해서는 어떻게 할까?두가지 방법을 제시할 수 있다. 하나는 직접 Observer를 구현하여 적용시키는 것이고, 또 다른 하나는 패턴을 적용하고자 하는 클래스에서 has a 로 클래스를 가지고 그 클래스에서 Observer를 상속받는 것이다. 다만, has a로 사용하게되면 중복되는 함수를 써야될 수 밖에 없을 것이다..
- Total
- Today
- Yesterday