간단 하면 서도 효과 적 인 깊이 있 는 디자인 모델
함수 식 작성 에 대한 사랑 에 따라 관계 형 데이터 베이스 와 문서 형 데이터 베 이 스 를 비교 하면 서 저 는 디자인 모델 에 대해 새로운 느낌 을 가지 게 되 었 습 니 다.
나 는 범례 가 항상 가장 효과 적 인 설명 이 라 고 생각한다. 만약 에 우리 가 한 식당 을 대상 으로 한다 면 (나의 영 어 는 그다지 좋 지 않 으 니 맞 춤 법 을 따 지지 마라):
Eatery (식당 류)
우선 식당 종류 가 하나 생 긴 다음 에 식당 이 제공 하 는 인 터 페 이 스 를 더 하면 식당 이 일 을 할 수 있다.현재, 먼저 제공:
milk() //
rice() //
물론 식당 이 설립 된 시간, 도시, 사장, 직원, 가격 도 있어 야 합 니 다. 그래서 다음 과 같은 것 도 추가 해 야 합 니 다.
build_date //
city //
boss_a // a
employee_a // a
employee_b // b
employee_c // c
price_milk //
price_rice //
menu_milk //
menu_rice //
또한 손님 이 식당 에 들 어 오 면 가격 을 제시 해 야 하기 때문에 더 해 야 합 니 다.
get_price() //
프로그램 을 만 들 려 면 설립 날짜, 도 시 를 보고 해 야 하기 때문에 더 해 야 합 니 다.
get_build_date() //
get_city() //
get_boss() //
get_employee() //
get_price() //
get_menu() //
우선 대체로 그 렇 죠. 그래서 사용 할 수 있 는 식당 을 얻 었 습 니 다.
Eatery:
build_date //
city //
boss_a // a
employee_a // a
employee_b // b
employee_c // c
price_milk //
price_rice //
menu_milk //
menu_rice //
get_build_date() //
get_city() //
get_boss() //
get_employee() //
get_price() //
get_menu() //
milk() //
rice() //
현재 식당 은 이렇게 운영 되 어야 한다.
get_build_date()
get_city()
get_menu()
get_price()
milk()
rice()
지금 은 대상 을 대상 으로 하 든 관계 형 데이터 베 이 스 를 먼저 생각해 보고 식당 의 데이터 베 이 스 를 만 들 려 면 어떻게 초 고 를 해 야 합 니까?
table_eatery: ,
id //
build_date //
city //
그래 야 되 는 거 아니 야?
우 리 는 항상 기 초 를 유지 하 는 그 표 는 가능 한 한 간단 하고 효율 적 이다.
이 표 는 식당 설립 날짜 와 도시, 그리고 id 번 호 를 통 해 이 식당 을 얻 을 수 있 음 을 알려 준다.
이렇게 많아
식당 주인 을 알 고 싶 으 면 어떻게 합 니까?
간단 하 다
표를 만 들 고 show me the info:
table_boss:
id
boss_name
eatery_id
그 랬 을 거 야.
id 번 호 를 통 해 어떤 사장 님 을 찾 은 다음 에 관련 된 식당 번호 eateryid.
사장 은 틀림없이 어떤 식당 의 사장 일 것 이다.
보스 보스a 당연히 eateryid 번호 이 식당 주인.
더 많은 것 은 우선 토론 하지 않 겠 다.
왜냐하면, 여기,
재 미 있 는 곳 이 이미 나 왔 다.
table_eatery 와 tableboss 는 대상 을 대상 으로 하 는 본질 을 전면적으로 밝 혔 다.
확장 및 연결
우 리 는 먼저 기 초 를 세 웠 다. eatery, 그리고?
우리 가 새로운 것 을 필요 로 할 때, eatery 를 확장 합 니 다.
어떻게 확장 하나 요?
새 표를 만 드 는 것 을 통 해
그 새 표 tableboss 어떻게 tableeatery 연락 은 요?
새로 확 장 된 tableboss eateryid 로 tableeatery。
언뜻 보기 에는 계승 이 아 닐 까?
먼저 tableeatery 대상, 그리고 이 상 대 를 계승 하여 위 에 boss 를 추가 합 니 다.name。
하지만 자세히 살 펴 보면 상속 이 아니 라 는 것 을 알 수 있다.(그리고 상속 이 좋 은 대상 이 아니 라 는 것 을 잘 알 고 있다)
여 기 는 '조합' 입 니 다.
새로운 대상 에 기 존 대상 의 인용 을 넣 고 되 었 다.
objectA ---> objectB [ objectA ]
이러한 유추 로 우 리 는 관계 형 데이터베이스 표 의 구축 을 심화 시 켰 다.
직원 표 만 들 기:
id
employee_name
eatery_id
식당 메뉴 만 들 기:
id
menu_item
menu_price
eatery_id
...
이것 은 사실 대상 을 향 한 과정 이다.
그래서 프로그램 에 있어 서 이 식당 을 설계 하면 이렇게 대상 을 대상 으로 할 수 있다.
Eatery (build_date, city)
build_date //
city //
get_build_date() //
get_city //
Boss (eatery)
name //
set_name //
get_name //
Employee (eatery)
names //
add_name //
remove_name //
get_name(i) //
get_names() //
Food (name, price)
name //
price //
get_name() //
get_price() //
Menu (eatery)
foods //
add_food(food) //
remove_food(food) //
get_food_price(i) //
get_food_prices //
get_food_names //
get_food_name(i) //
Cook (name, food_names)
name //
food_names //
get_name() //
get_food_names() //
make(food_name) // food_name
Cooklist (eatery)
cooks // entery
add_cook(cook) //
get_cook_names() //
get_cook_name(i) //
OK. 식당 구조 가 끝나 면 지금부터 운영 을 시작 합 니 다.
var entery_pie = new Eatery('2014-5-1', 'Beijing'); // 2014 5 1 , pie
entery_pie.get_build_date(); // => 2014-5-1
entery_pie.get_city(); // => Beijing
var boss = new Boss(eatery_pie); // pie
boss.set_name('Tom'); // Tom
var employee = new Employee(eatery_pie); // pie
employee.add_name('Lili'); // Lili
employee.add_name('Lina'); // Lina
employee.add_name('Jerry'); // Jerry
employee.get_names(); // => Lili,Lina,Jerry
employee.get_name(1); // => Lina
var menu = new Menu(eatery_pie); // pie
menu.add_food(new Food('milk', '12.00¥')); // 12.00¥
menu.add_food(new Food('rice', '26.00¥')); // 26.00¥
menu.get_food_names(); // => ,
menu.get_food_prices(); // => 12.00¥,26.00¥
menu.get_food_name(1); // =>
var cooklist = new Cooklist(eatery_pie); // pie
cooklist.add_cook(new Cook('Daxiong', ['milk', 'rice', 'tomoto'])); // 、 、
cooklist.add_cook(new Cook('Xiaoxiao', ['milk', 'rice'])); // 、
cooklist.get_cook_name(1).make('milk'); // Xiaoxiao
cooklist.get_cook_name(0).make('tomoto'); // Daxiong
이것 이 바로 제 가 현재 생각 하 는 대상 을 대상 으로 하 는 것 입 니 다. 더욱 간단 한 모델, 더 많은 확장 과 관련 이 있 습 니 다.
오 랜 시간 전에 제 가 수집 한 정 보 는 가능 한 한 포장 하고 a. get (). method () 의 표현 이 은밀 하지 않다 는 것 을 알려 주 었 습 니 다.
a. get (). nethod () 가 있다 면 가능 한 한 a. method () 로 바 꿔 숨 겨 야 합 니 다.
그러나 지금 나 는 이런 교조 적 인 방법 이 불필요 하고 비효 율 적 이라는 것 을 느 꼈 다.
많은 작은 상 대 를 담 는 것 보다 큰 대상 에 던 져 서 포장 하 는 것 보다 나 는 지금 많은 작은 상 대 를 만 들 고 책임 을 나 누 어 할당 하 는 것 을 더 좋아한다.
여러 가지 측면 에서 볼 때 코드 줄 수 를 간소화 하 는 외관 모델 은 모두 반 모듈 화 되 어 한 대상 으로 만 많은 함 수 를 조종 한다.
사실 밑바닥 은 층 층 이 전달 되 어야 진정 으로 기능 을 실현 할 수 있 는 곳 에 도착 할 수 있다.
이것 은 비효 율 적 이 며, 확장 을 작성 할 때 도 매우 어렵다.
만약 당신 이 충분 한 대상 을 다 썼 다 면, 내용 을 늘 려 야 할 때, 이 대상 의 관련 '체인' 에 대해 속수무책이다.
그리고 흩 어 진 작은 대상 군 은 함수 식 스타일 에 더욱 가 깝 고 소스 대상 의 인용 만 지정 하면 그 를 확장 할 수 있 으 며 계승 이 아 닌 조합 을 사용 할 수 있 습 니 다.
그리고 어떤 면 에서 이것 이 바로 함수 식 이라는 것 을 알 게 될 것 이다.
데이터 구조 Eatery 와 데이터 구 조 를 둘 러 싼 Eatery 함수 군:
eatery
fn1(eatery, arg1, arg2, ...)
fn2(eatery, arg1, arg2, ...)
fn3(eatery, arg1, arg2, ...)
...
장점 은 확장 (기능 증가, 내용 증가, 관련 증가,...) 과 수정 이 매우 쉽다 는 것 이다.
나 쁜 점 은?e............................................................................................
그러나 저 는 좋 은 점 은 절대적 인 것 이 라 고 생각 합 니 다. 왜냐하면 이것 은 함수 의 특성 에 더욱 부합 되 기 때 문 입 니 다.
,show me the result
fn1(eatery_pie, arg1, arg2) => pie
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.