javascript 디자인 모델의 간단한 공장 모델
1. 하나의 요구
다음은 우리가 간단한 수요에서 말하자면 사용자 로그인을 할 때 우리는 왕왕 사용자 이름 검사 등 기능을 할 수 있다. 다음은 일반적인 방법으로 간단하게 실현할 것이다.필요: 로그인은 사용자 이름이 16개의 숫자나 알파벳 이내로 제어되어야 하며, 검사에 실패한 팝업 창 알림입니다
var LoginTips = function(text) {
this.content = text;
}
LoginTips.prototype.show = function () {
//
}
var loginTipName = new LoginTips(' , 16 !')
loginTipName.show()
자, 큰일 났습니다. 앞으로도 이걸로 비밀번호 검사를 할 수 있습니다.
var loginTipPassword = new LoginTips(' ')
와, 쓰기 좋죠!
2. 두 번째 요구 사항
원래의 기초 위에서 등록하러 가는 버튼을 추가하면 된다. 그러면 우리는 클래스를 하나 더 써서 이 일을 할 것이다
var LoginRegister = function(text) {
this.content = text;
}
LoginRegister.prototype.show = function () {
//
}
var gotoRgister = new LoginTips(' , ?')
gotoRgister.show()
3. 세 번째 요구 사항은 로그인 성공 후 알림 상자를 표시하여 사용자가 성별을 입력하도록 합니다
........ 또 종류를 써야 돼...사용하기에는 관리가 너무 복잡하고 종류 이름이 달라서 매번 사용할 때마다 찾아봐요. 귀찮아요. 간단한 공장 방법으로 실현해 볼게요. 예를 들면 체육용품점, 모든 기재는 대응하는 속성을 사용하고 우리는 농구, 축구, 테니스를 예로 들겠습니다.
var Basketball = function () {
this.info = ' '
}
Basketball.prototype = {
getNumber:function () {console.log(' 5 ')},
getBallsize:function() {console.log(' ')}
}
var Football = function () {
this.info = ' '
}
Football.prototype = {
getNumber:function () {console.log(' 11 ')},
getBallsize:function() {console.log(' ')}
}
var Tennis = function () {
this.info = ' !'
}
Tennis.prototype = {
getNumber:function () {console.log(' 1 ')},
getBallsize:function() {console.log(' , ')}
}
//
var SportFactory = function(name){
switch(name){
case 'NBA': return new Basketball();
case 'wordCup': return new Bootball();
case 'frenchOpen': return new Tennis()
}
}
var basketball = SportFactory('NBA')
basketball.getNumber()
다음은 우리가 처음에 두 종류를 간단한 공장의 방식을 통해 개조하면 훨씬 쓰기 쉽다
var PopFactory = function(name){
switch(name){
case 'checkTip': return new loginTips();
case 'registerTip': return new loginRegister()
}
}
이 정도면 괜찮아요. 많이 썼어요.
하나의 대상이 많은 종류를 대체할 수 있다
예를 들어 책 한 권을 만들려면 이런 책들은 모두 비교적 비슷한 속성을 가지고 있다. 예를 들어 책 이름, 프로필, 출판 시간 등이 있다.이렇게 하면 우리는 대상을 통해 서로 다른 책을 만들 수 있다.
//
function createBook(name,time,summary){
//
var obj = new Object()
obj.name = name
obj.time = time
obj.summay = summay
obj.getName = function (){
console.log(this.name)
}
return obj
}
//
var js = createBook('js','2013',' javascript')
var css = createBook('css','2015',' css')
js.getName()
css.getName()
// ~
그럼 이제 두 가지 방식이 어떤 공통점과 차이점이 있는지 생각해 볼까요?첫 번째는 클래스 실례화 대상을 통해 만들어진 것이고, 두 번째는 새로운 대상을 만들어서 이 대상에 대한 속성과 방법의 확대를 통해 이루어진 것이다.첫 번째 방법은 이 클래스에 부류가 있다면 창설된 대상은 그 부류의 속성과 방법을 가지게 되고 두 번째는 새로운 개체가 된다.물론 어떤 방법을 선택하여 실현하느냐는 네 자신이 수요를 해결하는 사고방식에 달려 있다!
끝나다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.