浅谈C#设计模式之工厂模式

作者:hebedich 时间:2021-12-17 16:06:48 

工厂模式和简单工厂有什么区别。废话不多说,对比第一篇例子应该很清楚能看出来。

优点: 工厂模式弥补了简单工厂模式中违背开放-封闭原则,又保持了封装对象创建过程的优点。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
    public interface Factory
    {
        JS createjs();
    }
    public class JS
    {
        public int NumA { get; set; }
        public int NumB { get; set; }
        public virtual int GetResult()
        {
            return 0;
        }
    }
    public class Add1 : JS
    {
        public override int GetResult()
        {
            return NumA + NumB;
        }
    }
    public class Sub1 : JS
    {
        public override int GetResult()
        {
            return NumA - NumB;
        }
    }
    public class AddFactory : Factory
    {
        public JS createjs()
        {
            return new Add1();
        }
    }
    public class SubFactory: Factory
    {
        public JS createjs()
        {
            return new Sub1();
        }
    }
}

客户端调用:


  Factory factory = new AddFactory();
            JS  js = factory.createjs();
            js.NumA = 1;
            js.NumB = 2;
            Console.WriteLine( js.GetResult());
            Factory f = new SubFactory();
            JS J= f.createjs();
            J.NumA = 9;
            J.NumB = 0;
            Console.WriteLine(J.GetResult());
            Console.ReadLine();

这里主要是对比了下和简单工厂模式的区别,记录下来,以防自己搞混。

标签:C#,设计模式,工厂模式
0
投稿

猜你喜欢

  • java如何用Processing生成马赛克风格的图像

    2023-11-07 20:52:44
  • Spring Boot实现分布式锁的自动释放的示例代码

    2023-10-17 11:06:24
  • Java面试题冲刺第五天--基础篇2

    2023-10-07 13:17:04
  • 浅谈Java基础知识之BigDecimal

    2021-09-06 16:49:27
  • Java基于Swing实现的打猎射击游戏代码

    2021-06-29 17:04:56
  • C#串口连接的读取和发送详解

    2022-05-11 10:04:47
  • Java中简单实用Quartz概述

    2021-09-09 14:16:30
  • Java class文件格式之数据类型(二)_动力节点Java学院整理

    2022-06-26 02:15:45
  • SSM如何实现在Controller中添加事务管理

    2023-11-29 07:23:18
  • c#如何使用 XML 文档功能

    2023-12-25 03:44:33
  • Spring Shell应用程序开发流程解析

    2021-06-28 23:20:50
  • Java语言中&&与& ||与|的区别是什么

    2022-06-10 17:44:09
  • Android判断用户2G/3G/4G移动数据网络

    2022-12-13 03:21:49
  • winform去掉右上角关闭按钮的方法

    2023-02-11 16:31:40
  • 详解Android使用CoordinatorLayout+AppBarLayout实现拉伸顶部图片功能

    2023-04-27 16:55:29
  • Java使用自定义注解实现为事件源绑定事件监听器操作示例

    2023-06-21 01:17:55
  • Java 数据结构进阶二叉树题集下

    2022-07-11 19:16:18
  • C#超市收银系统设计

    2023-06-21 00:00:09
  • springboot如何静态加载@configurationProperties

    2021-12-13 16:20:13
  • Spring Security+JWT实现认证与授权的实现

    2022-04-02 00:41:11
  • asp之家 软件编程 m.aspxhome.com