zoukankan      html  css  js  c++  java
  • 面向对象编程模式之“简单工厂和单例“

    简单工厂模式 (Simple Factory Pattern):

          定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

          在简单工厂模式中用于创建实例的方法通常是静态(static)方法,因此又被称为静态工厂方法(Static Factory Method)模式

         要点:如果需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无须知道其创建细节。

    用代码来实现就是: 

        简单工厂模式包含以下3个角色

          Factory(工厂角色)

          Product(抽象产品角色)

          ConcreteProduct(具体产品角色)

    //典型的抽象产品类代码:
    abstract class Product
    {
         //所有产品类的公共业务方法
    public void MethodSame() 
    {
        //公共方法的实现
    }
    
    //声明抽象业务方法
    public abstract void MethodDiff();
    }
    //典型的具体产品类代码:
    class ConcreteProductA : Product
    {
        //实现业务方法
        public override void MethodDiff()
        {
            //业务方法的实现
        }
    }
    //典型的工厂类代码:
    class Factory
    {
        //静态工厂方法
        public static Product GetProduct(string arg)
        {
            Product product = null;
            if (arg.Equals("A"))
            {
                product = new ConcreteProductA();
                //初始化设置product
            }
            else if (arg.Equals("B"))
            {
                product = new ConcreteProductB();
                //初始化设置product
            }
            return product;
        }
    }
    //客户端代码:
    class Program
    {
        static void Main(string[] args)
        {
            Product product;
            product = Factory.GetProduct("A"); //通过工厂类创建产品对象
            product.MethodSame();
            product.MethodDiff();
        }
    }
    //
    两个类A和B之间的关系应该仅仅是A创建B或者是A使用B,而不能两种关系都有。将对象的创建和使用分离,使得系统更加符合单一职责原则,有利于对功能的复用和系统的维护。
    
    

     单例模式 (singleton pattern):

            即一个类只有一个实例化对象,并提供一个全局访问点来访问这个实例。

            1.该类只能有一个实例

            2.必须自行创建这个实例

            3.必须自行向整个系统提供这个实例

    单例模式的结构:

     单例模式的实现方式:      1.私有构造函数         2.静态私有成员变量(自身类型)         3.静态公有的工厂方法

    // 单例模式的实现方式
    class
    Singleton { private static Singleton instance=null; //静态私有成员变量 //私有构造函数 private Singleton() { } //静态公有工厂方法,返回唯一实例 public static Singleton GetInstance() { if(instance==null) instance=new Singleton(); return instance; } }
  • 相关阅读:
    Python3之random模块常用方法
    Go语言学习笔记(九)之数组
    Go语言学习笔记之简单的几个排序
    Go语言学习笔记(八)
    Python3之logging模块
    Go语言学习笔记(六)
    123. Best Time to Buy and Sell Stock III(js)
    122. Best Time to Buy and Sell Stock II(js)
    121. Best Time to Buy and Sell Stock(js)
    120. Triangle(js)
  • 原文地址:https://www.cnblogs.com/john69-/p/5243492.html
Copyright © 2011-2022 走看看