• 简单工厂模式(Simple Factory)示例源码


    * 模式分析

       简单工厂模式根据提供给它的数据,返回几个类中的一个类的实例,通常返回的类都有一个公共父类和公共方法.

    * 实施过程

                                                                                                

                                                                    Love

                                          HaBaoZhuLove    XueHaiYingLove    
    LoveSimpleFactory
    + Create(string LoveWho) :Love

     * 源码分析与实现

        ~ 工厂类角色LoveSimpleFactory:工厂类在客户端的直接控制下(Create方法)创建产品对象.

        ~ 抽象产品角色Love:定义简单工厂创建的对象的父类或它们共同拥有的接口.可以是一个类,抽象类或接

           口.

        ~ 具体产品角色HaBaoZhuLove,XueHaiYingLove:定义工厂具体加工出的对象.

        控制台程序:program.cs

                      
     1      using System;
     2                        using System.Collections.Generic;
     3                        using System.Text;
     4 
     5 /*该源码由邹江平2008-8-12编写,如有学习者请与QQ:200580231联系*/
     6 namespace X8023Z//命名空间
     7 {
     8     class Program
     9     {  //在客户端类中调用工厂类LoveSimpleFactory中的Create方法,创建产品对象
    10         static void Main(string[] args)
    11         {
    12             LoveSimpleFactory lsf = new LoveSimpleFactory();
    13             Love l = lsf.Create("哈宝猪");
    14             l.Start();
    15             l.End();
    16             Console.WriteLine("-----------------");
    17             l = lsf.Create("薛海英");
    18             l.Start();
    19             l.End();
    20 
    21         }
    22     }
    23     //定义抽象类Love,并声明两个抽象方法
    24     public abstract class Love
    25     {
    26         public abstract void Start();
    27         public abstract void End();
    28     }
    29    //定义类HaBaoZhuLove,继承抽象类Love,然后实现Start()和End()方法
    30     public class HaBaoZhuLove : Love
    31     {
    32         public override void Start()
    33         {
    34             Console.WriteLine("开始爱哈宝猪!");
    35             Console.WriteLine("请按任意键继续 !");
    36             Console.Read();
    37         }
    38 
    39         public override void End()
    40         {
    41             Console.WriteLine("爱哈宝猪结束!");
    42             Console.WriteLine("请按任意键退出 !");
    43             Console.Read();
    44             Console.Read();
    45         }
    46     }
    47     //定义类XueHaiYingLove,继承抽象类Love,然后实现Start()和End()方法
    48     public class XueHaiYingLove : Love
    49     {
    50         public override void Start()
    51         {
    52             Console.WriteLine("开始爱薛海英!");
    53             Console.WriteLine("请按任意键继续 !");
    54             Console.Read();
    55         }
    56 
    57         public override void End()
    58         {
    59             Console.WriteLine("爱薛海英结束!");
    60             Console.WriteLine("请按任意键继续 !");
    61             Console.Read();
    62         }
    63     }
    64     //定义LoveSimpleFactory类,该类实现工厂生产工作,故通过Create生产HaBaoZhu和XueHaiYing.
    65     public class LoveSimpleFactory
    66     {
    67         public Love Create(string LoveWho)
    68         {
    69             if (LoveWho == "哈宝猪")
    70                 return new XueHaiYingLove();
    71             else if (LoveWho == "薛海英")
    72                 return new HaBaoZhuLove();
    73             else
    74                 return null;
    75         }
    76     }
    77 
    78  }
    79 

    /*该源码由邹江平2008-8-12编写,如有学习者请与QQ:200580231联系*/

       *  补充说明

           优点:工厂类含有必要的判断逻辑,可以决定在什么时候创建一个产品类的实例,客户端可以免除直接创建

                  产品对象的责任,而仅仅"消费"产品.简单工厂模式实现了对责任的分割.

          缺点:当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的特点.因为工厂类集中了

                 所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响,同时,系统扩展困难,一旦添加新产品

                 就不得不修改工厂逻辑,有可能造成工厂逻辑过于复杂


                 /*该源码由邹江平2008-8-12编写,如有学习者请与QQ:200580231联系*/


  • 相关阅读:
    pip install pli 提示:Could not find a version that satisfies the requirement PIL
    关于selenium部分元素定位不到的解决办法
    ERROR 1054 (42S22): Unknown column ‘password‘ in ‘field list‘
    通过Tomcat jpress连接不到数据库
    Navicat MySQL 连接出现 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
    Selenium中核心属性以及方法
    selenium中定位frame中的元素
    selenium中截屏以及按照时间格式保存到相应文件夹
    Selenium中核心属性以及方法
    selenium中关于js脚本的一些操作
  • 原文地址:https://www.cnblogs.com/zjp8023/p/SimpleFactory_8023.html
Copyright © 2020-2023  润新知