C#学习日记02——用伪代码实现简单工厂设计模式

这篇博客介绍了如何通过简单工厂模式根据用户输入的品牌名称动态创建Lenovo、Dell、IBM、Acer电脑对象。文章展示了如何声明抽象类NoteBook及各个品牌的子类,并在GetNoteBook方法中根据用户输入返回相应的实例。虽然存在输入大小写的处理问题,但这个例子阐述了面向对象编程中的多态性和工厂模式的应用。
摘要由CSDN通过智能技术生成

问题:一个工厂中生产Lenovo、Dell、IBM、Acer 牌子的电脑,如何根据用户的需求来实现生产用户想要的品牌?

用一个图片来表明
工厂设计模式
工厂中有四个品牌,我们需要屏蔽他们的差异
所以需要引用抽象类NoteBook
首先用伪代码声明几个类

        public abstract class NoteBook  //抽象父类,将父类继承给子类
        {
            public abstract void SayHello();           
        }
        public class Lenovo : NoteBook
        {
            public override void SayHello()
            {
                Console.WriteLine("我是联想电脑");
            }
        }
        public class Acer : NoteBook
        {
            public override void SayHello()
            {
                Console.WriteLine("我是宏基电脑");
            }
        }
        public class Dell : NoteBook
        {
            public override void SayHello()
            {
                Console.WriteLine("我是戴尔电脑");
            }
        }
        public class IBM : NoteBook
        {
            public override void SayHello()
            {
                Console.WriteLine("我是ibm笔记本");
            }
        }

声明了电脑的类后
如何实现用户的需求呢?
可以选择让用户输入自己想要的电脑品牌

            Console.WriteLine("请输入你想要的笔记本品牌");
            string s = Console.ReadLine();

用户输入了自己想要的电脑品牌,如何调用合适的类呢?
这里就是重点
可以选择声明一个函数,将参数代入,并将一个子类赋值给父类,这里我们已经将一个父类对象赋值为null,然后根据用户的需求返回合适的子类

定义的方法和主函数如下:

       static void Main(string[] args)
        {
            Console.WriteLine("请输入你想要的笔记本品牌");
            string s = Console.ReadLine();
             NoteBook c=  GetNoteBook(s);
            c.SayHello();
        }
        /// <summary>
        /// 简单工厂的核心 根据用户的输入创建对象赋值给父类
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static NoteBook  GetNoteBook(string s )
        {
            NoteBook a = null;
            if (s == "Lenovo")
            {
                a = new Lenovo();
            }
            else if (s == "IBM")
            {
                a = new IBM();

            }
            else if (s == "DELL")
            {
                a = new Dell();
            }
            else if (s == "Acer")
            {
                a = new Acer();
            }
            return a;
        }

在这个简单工厂里,你可选择使用switch结构,也可以像我一样使用if—else结构
程序还是有一些问题,比如输入全小写也返回为null,不过大家可以使用ToUpper和Tolower来将用户输入的全部转换为大写或者小写,再进行比较。

楼主水平尚不够高,只想分享自己学习中的见解。
如果有什么不对的地方,欢迎大家一起探讨!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值