设计模式-工厂方法模式-创新互联

public interface IYunSuan
    {
        double getResult(int num1, int num2);        
    }
    public class jia : IYunSuan
    {
        public double getResult(int num1, int num2)
        {
            return num1 + num2;
        }
    }
    public class jian : IYunSuan
    {
        public double getResult(int num1, int num2)
        {
            return num1-num2;
        }
    }
    public class cheng : IYunSuan
    {
        public double getResult(int num1, int num2)
        {
            return num1*num2;
        }
    }
    public class chu : IYunSuan
    {
        public double getResult(int num1, int num2)
        {
            if (num2 == 0) return 0;
            return num1/num2;
        }
    }

    //////////////
     //简单工厂,专门生产对象
        public static IYunSuan createYunSuanObj(string type)
        {
            switch (type)
            {
                case "+":return new jia();
                case "-": return new jian();
                case "*": return new cheng();
                case "/": return new chu();
            }
            return null;
        }
    //工厂方法模式,把简单工厂分解
    public interface IFactory
    {
        IYunSuan createYunSuanObj();
    }
    public class jiaFactory : IFactory
    {
        public IYunSuan createYunSuanObj()
        {
            return new jia();
        }
    }
    public class jianFactory : IFactory
    {
        public IYunSuan createYunSuanObj()
        {
            return new jian();
        }
    }
    public class chengFactory : IFactory
    {
        public IYunSuan createYunSuanObj()
        {
            return new cheng();
        }
    }
    public class chuFactory : IFactory
    {
        public IYunSuan createYunSuanObj()
        {
            return new chu();
        }
    }

        前端:
        static void Main(string[] args)
        {
            //简单工厂模式
            //var jia=simpleFactory.createYunSuanObj("+");
            //var result=jia.getResult(1,2);
            //Console.WriteLine(result);
            //Console.ReadLine();
                        //工厂方法模式
            IFactory factory = new jiaFactory();
            var jia=factory.createYunSuanObj();
            var result=jia.getResult(1, 2);
            Console.WriteLine(result);
            Console.ReadLine();
        }

总结:定义一个创建对象的接口,让子类决定实例化哪个类,工厂模式使得一个类的实例化延迟到其子类。是基于简单工厂的扩展模式,解耦了简单工厂的工厂类,符合了几大原则
优点:解耦
缺点:代码量增加N多,让人蛋疼。

公司主营业务:网站设计制作、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出增城免费做网站回馈大家。

设计模式-工厂方法模式

设计模式-工厂方法模式

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。

标题名称:设计模式-工厂方法模式-创新互联
浏览地址:https://www.cdcxhl.com/article16/diisgg.html

成都网站建设公司_创新互联,为您提供定制开发外贸建站营销型网站建设网站设计网站改版微信公众号

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设