zoukankan      html  css  js  c++  java
  • 简单工厂模式

    简单工厂模式
    在OO程序中,我们经常看到的一种模式就是简单工厂模式。简单工厂模式根据体共同它的数据,返回几个可能类中一个类得实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化。
    一个简单的例子
    基类
    public class BaseClass
    {
    protected string firstname;
    protected string lastname;

    public string GetFirstName()
    {
    return firstname;
    }
    public string GetLastName()
    {
    return lastname;
    }
    }
    第一个继承类
    public class FirstName : BaseClass
    {
    public FirstName(string name)
    {
    int i = name.Trim().IndexOf(" ");
    if (i > 0)
    {
    firstname
    = name.Substring(0, i);
    lastname
    = name.Substring(i + 1);

    }
    else
    {
    firstname
    = name;
    lastname
    = "";
    }
    }
    }
    第二个继承类
    public class SecondClass: BaseClass
    {
    public SecondClass(string name)
    {
    int i = name.Trim().IndexOf(",");
    if (i > 0)
    {
    firstname
    = name.Substring(0, i);
    lastname
    = name.Substring(i + 1);

    }
    else
    {
    firstname
    = name;
    lastname
    = "";
    }
    }
    }
    工厂类
    public class NameFactory
    {
    public NameFactory() { }
    public BaseClass GetName(string name)
    {
    int i = name.Trim().IndexOf(",");
    if (i > 0)
    {
    return new SecondClass(name);
    }
    else
    {
    return new FirstName(name);
    }
    }
    }
    Main函数里调用
    class Program
    {
    static void Main(string[] args)
    {
    string name = Console.ReadLine();
    NameFactory nf
    = new NameFactory();
    BaseClass bc
    = nf.GetName(name);
    Console.WriteLine(bc.GetFirstName());
    Console.WriteLine(bc.GetLastName());
    }
    }
    运行效果
     
    这个就是简单工厂模式的基本原理,创建一个抽象工厂,他决定返回哪一个类得实例,并将该实例返回。接下来可以调用哪个类的实例的方法,但不需要知道具体使用的是哪一个子类。
  • 相关阅读:
    振动传感器
    水银开关式碰撞传感器
    倾斜传感器
    光敏传感器
    激光传感器的使用
    html字符串 转 json
    浏览器播放视频加快进功能
    处理箭头函数单个参数括号规则冲突
    VUE-directive指令之语法、引用、钩子函数、参数
    win10系统自动升级怎么还原到以前的系统
  • 原文地址:https://www.cnblogs.com/fifalover09/p/2001500.html
Copyright © 2011-2022 走看看