2012-08-11 2 views
1

저에게 많은 닷넷 개발이 있었고, 대부분의 애플리케이션은 UI, 서비스, BL, DAL .. 및 데이터베이스 레이어에 레이어되어있었습니다. 각 계층은 종종 자체 프로젝트였으며, 모두 솔루션을 통해 실행되는 데이터의 흐름을 서로 참조했습니다.안드로이드 어플 리케이션 Archtecture

저는 Java와 Android의 새로운 브랜드입니다. 우리가 하나의 출력 파일을 개발하므로 하나의 프로젝트를 개발하는 것 같습니다. 각 레이어마다 다른 폴더를 사용하면됩니까? 어쩌면 그 안에 클래스가있는 ServiceLayer 폴더와 그 안에 비즈니스 클래스가있는 BusinessLayer 폴더가 있습니까?

코드를 깨끗하고 유지 보수하기 쉬운 구조는 무엇입니까? 나는 전문적인 이유 때문에 (아직) 이것을하지 않고있다. 순전히 배우는 것입니다.

편집 : 응용 프로그램은 사용자가 무언가에 대해 매일 데이터를 입력 할 수있는 단순한 응용 프로그램이 될 것입니다 (간단한 UI, 데이터베이스에서 '참조 데이터'를 가져 오는 loookups 몇 가지 드롭 다운). 사용자가 무언가를 선택하고, 세부 정보를 입력하고, inbuilt SQLite 데이터베이스에 저장합니다.

일단 작동하면 온라인 데이터베이스에 데이터를 동기화하고 싶습니다. 최신 데이터를 저장하고 웹 프런트를 제공하는 .Net 호스트 시스템 (GoDaddy, 현재는)에서 호스팅되는 웹 서비스를 작성합니다. 사용자가 랩톱이나 PC에 액세스 할 수있는 경우 데이터 입력이 쉬워집니다). 따라서 내 앱을 새로 고치는 일종의 웹 서비스이며 서버에 업데이트를 보냅니다.

+0

이것은 현재 구축중인 응용 프로그램의 종류에 따라 크게 다릅니다. 그 점에 대해 약간의 통찰력을 제공해 주시겠습니까? (달성하고자하는 것에 따라 많은 변화가 있습니다.) – Jon

+0

고마워요. 죄송합니다! 귀하가 요청한 세부 사항으로 질문을 업데이트했습니다. 나 한테서 감독. 감사. – Craig

답변

2

먼저, 어떤 응용 프로그램을 사용하는지에 따라 다릅니다.

사용자가 응용 프로그램을 사용하는 방법에 대한 텍스트 또는 스키마를 작성해야합니다. 가능한 모든 시나리오를 수정하십시오. 나중에 테스트에 사용할 예제를 작성하십시오.

기능에 무엇이 속하고 무엇이 변경 가능한 구성인지 결정하십시오. 시나리오에서 기능 및 데이터 엔티티 추출.

시나리오에서 귀하의 앱이 무엇을 할 것인지 결정합니다. 서비스, ​​활동, 위젯, 컨텐츠 제공 업체 또는 복잡한 시스템 (일부 다른 구성 요소 포함)입니까? 시나리오에 대한 결정을하십시오.

복잡한 시스템의 경우 응용 프로그램 구성 요소간에 기능 및 데이터 엔터티를 배포하십시오. 구성 요소 목록과 구성 요소 (활동 또는 기타 사항)를 작성하십시오.

설명이 포함 된 UI 구성 요소 목록 작성 (아직까지는 아닙니다) 나중에 위젯, 활동 또는 단편 또는 레이아웃이됩니다.

UI 구성 요소의 초안 레이아웃을 만듭니다. 하나에서 다른 패스로 간단한 패스를 만드십시오. UI를보십시오. 초안 UI로 시나리오로 돌아가서 모두 재생하십시오. 모든 UI 구성 요소와 클래스는 하나의 패키지 또는 패키지 계층 구조에 배치됩니다.

데이터 엔티티의 목록을 만드십시오. 무엇이 무엇에 들어갈 지 결정하십시오. DB 또는 다른 DB에서 컬렉션 또는 테이블로 계획하십시오. 그것들을 클래스로 만들고 다른 패키지 계층 또는 다른 패키지에 넣습니다. 여기에는 DB 헬퍼도 있습니다. SQL로 DB와 대화하는 클래스입니다.

테스트 데이터로 UI 및 데이터 엔터티를 채우고 시작하기위한 테스트 클래스를 만듭니다.

어댑터는 상위 GroupView에서만 사용되므로 공개 일 필요는 없습니다. 따라서 일반적으로 어댑터 용 파일이 없습니다.

모든 전역을 특수 정적 클래스로 지정하지 마십시오. 나쁜 습관입니다. 코드와 구성을 혼합하고 있습니다.

구성 데이터가 기록됩니다. 그 중 일부가 복잡하면 XML 소스와 구문 분석기를 사용하십시오. 리소스 데이터의 독자를 전역 변수로 만드십시오. 모두가 정적 일 필요는 없습니다! 예를 들어 주 Activity 인스턴스에 속할 수 있습니다.

코드에서 구성 할 수없는 상수를 사용하지 마십시오! 당신의 이름 일 수도 있습니다 :-). 다른 모든 상수는 때로는 일정하지 않게됩니다.

항상 작성 : 무언가를 작성하십시오.이 새로운 것에 대한 대량 추가 테스트에 무언가를 연결하십시오.이 새로운 것을 테스트하십시오. - 대량 반복을 테스트하십시오. 작은 단계 만!

+0

감사 Basbous. 나는 당신이 말한 것을 많이했으나 디자인을 돌아 다니는 당신의 방법을 정말 좋아합니다. 감사. 내 응용 프로그램은 이미 작은 .Net 응용 프로그램으로 살아 있습니다. 나는 자바에서 학습 훈련으로 다시하고 싶다. 따라서 데이터 엔티티 ... 데이터베이스조차도 설계되었습니다. 내 .Net 세계에서 DAL은 데이터 액세스를 수행하고 데이터를 가져 와서 테이블 (및 더 복잡한 데이터 추출을위한 사용자 지정 클래스)과 일치하는 클래스에 저장 한 다음 해당 개체를 레이어 위로 또는 아래로 전달합니다. 그 연습은 Java에서 사용됩니까? – Craig

+0

@Craig 예 당신은 Java로 구조를 구현할 수 있습니다. 전 닷넷 개발자이고 전 닷넷에서 자바로 도트 경험을했습니다. 어댑터 용 패키지, 엔티티 용 패키지, 서비스 및 브로드 캐스트 패키지, 활동 패키지 , 닷넷에서 같은 방식으로 코드를 관리하면 도움이 될 것입니다. – Basbous

관련 문제