您的位置:首页 > 其它

设计模式学习5 Prototype

2010-07-20 16:06 281 查看
应用场景:

复杂对象构建,这些对象是可能不断变化的,但是这些对象的借口是相对稳定的。



实现代码:

public interface INormalActor
    {
        INormalActor Clone();
    }

    public interface IFlyActor
    {
        IFlyActor Clone();
    }

    public interface IWaterActor
    {
        IWaterActor Clone();
    }

    // 深拷贝通过序列化实现序列化
    [Serializable]
    public class NormalActorA : INormalActor
    {

        #region INormalActor Members

        public INormalActor Clone()
        {
            return (INormalActor)this.MemberwiseClone();
        }

        #endregion
    }

    public class NormalActorB : INormalActor
    {

        #region INormalActor Members

        public INormalActor Clone()
        {
            return (INormalActor)this.MemberwiseClone();
        }

        #endregion
    }

    public class FlyActorA : IFlyActor
    {

        #region IFlyActor Members

        public IFlyActor Clone()
        {
            return (IFlyActor)this.MemberwiseClone();
        }

        #endregion
    }

    public class FlyActorB : IFlyActor
    {

        #region IFlyActor Members

        public IFlyActor Clone()
        {
            return (IFlyActor)this.MemberwiseClone();
        }

        #endregion
    }

    public class WaterActorA : IWaterActor
    {

        #region IWaterActor Members

        public IWaterActor Clone()
        {
            return (IWaterActor)this.MemberwiseClone();
        }

        #endregion
    }

    public class WaterActorB : IWaterActor
    {

        #region IWaterActor Members

        public IWaterActor Clone()
        {
            return (IWaterActor)this.MemberwiseClone();
        }

        #endregion
    }

    public class GameSystem
    {
        public void Run(INormalActor normalActor, IFlyActor flyActor, IWaterActor waterActor)
        {
            INormalActor normalActor1 = normalActor.Clone();
            INormalActor normalActor2 = normalActor.Clone();
            INormalActor normalActor3 = normalActor.Clone();
            INormalActor normalActor4 = normalActor.Clone();
            INormalActor normalActor5 = normalActor.Clone();

            IFlyActor flyActor1 = flyActor.Clone();
            IFlyActor flyActor2 = flyActor.Clone();

            IWaterActor waterActor1 = waterActor.Clone();
            IWaterActor waterActor2 = waterActor.Clone();
        }
    }




Client:

static void Main(string[] args)
        {
            GameSystem gameSystem = new GameSystem();
            gameSystem.Run(new NormalActorA(), new FlyActorA(),
                new WaterActorA());
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: