추상 공장 모드 (abstract) 생 성 모드 c \ # 간단 한 예

3497 단어 디자인 모드c#
추상 공장 모드 (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

좋은 웹페이지 즐겨찾기