추상 공장 모드 (abstract) 생 성 모드 c \ # 간단 한 예
유저 유저 수 play 1, play 2 에 적용... 변화 가 있 고, 행동 move, jm 에 변화 가 없 을 때
플레이어 플레이 원 의 행동: 왼쪽으로 이동 및 위로 점프
플레이어 플레이 투 의 행동: 오른쪽으로 이동 및 아래로 점프
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace adapterpattern
{
public partial class abstractForm : Form
{
public abstractForm()
{
InitializeComponent();
}
private void btnDisplay_Click(object sender, EventArgs e)
{
playFactory pf1 = new playone();// move jump.
playWorld p1 = new playWorld(pf1);//
this.listBox1.Items.Add(p1.createPlay());
playWorld p2 = new playWorld(new playtwo());//
this.listBox1.Items.Add(p2.createPlay());
}
}
public class playWorld//
{
imove move;
ijump jump;
public playWorld(playFactory pp)
{
this.move = pp.move();
this.jump = pp.jump();
}
public string createPlay()
{
move.move();
jump.jump();
return move.movestring + jump.jumpstring;
}
}
public abstract class playFactory//
{
public abstract imove move();
public abstract ijump jump();
}
public class playone : playFactory// 1
{
public override imove move()
{
return new leftmove();
}
public override ijump jump()
{
return new topJump();
}
}
public class playtwo : playFactory// 2
{
public override imove move()
{
return new rightmove();
}
public override ijump jump()
{
return new downJump();
}
}
public abstract class imove// imove
{
public string movestring;
public abstract void move();
}
public abstract class ijump// jump
{
public string jumpstring;
public abstract void jump();
}
public class leftmove : imove//move 1
{
public override void move()
{
movestring = " ";
}
}
public class rightmove : imove//move 2
{
public override void move()
{
movestring = " ";
}
}
public class topJump : ijump//jump 1
{
public override void jump()
{
jumpstring = " ";
}
}
public class downJump : ijump//jump 2
{
public override void jump()
{
jumpstring = " ";
}
}
}
새로운 유 저 를 추가 해 야 할 때, playfacotry 를 계승 하 는 종 류 를 하나 더 추가 하면 다른 것 은 변경 할 필요 가 없습니다.신규 유저 행동: 왼쪽으로 이동 및 아래로 점프
public class newplay:playFactory// :
{
public override imove move()
{
return new leftmove();
}
public override ijump jump()
{
return new downJump();
}
}
마지막 으로 클 라 이언 트 에 한 마디 만 추가 하면 됩 니 다. 편리 합 니 다.
playWorld newp = new playWorld(new newplay()); this.listBox1 .Items .Add (newp .createPlay ());
이 서 류 는 주 주 씨 가 작성 하 였 으 니, 전재 할 때 주 씨 의 집에 서 나 온 것 이 라 고 밝 혀 주 십시오.http://blog.csdn.net/zhgl7688
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.