浅谈C#设计模式之工厂模式
作者:hebedich 发布时间:2021-12-17 16:06:48
标签:C#,设计模式,工厂模式
工厂模式和简单工厂有什么区别。废话不多说,对比第一篇例子应该很清楚能看出来。
优点: 工厂模式弥补了简单工厂模式中违背开放-封闭原则,又保持了封装对象创建过程的优点。
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();
这里主要是对比了下和简单工厂模式的区别,记录下来,以防自己搞混。


猜你喜欢
- 本文实例讲述了Android开发使用URLConnection进行网络编程。分享给大家供大家参考,具体如下:URL的openConnecti
- 本文实例讲述了Asp.net中C#使用Socket发送和接收TCP数据的方法,分享给大家供大家参考。具体实现方法如下:具体程序代码如下:us
- 一、绘制背景绘制背景的方法有两种:自己利用canvas进行绘制利用view的自带方法进行绘制1.1 canvas绘制背景自己绘制的背景的方法
- 介绍:unity界面开发,会用到很多导航的按钮,他们是公共的,单击其中一个按钮,显示对应的界面。unity中,UGUI自带Toggle组件,
- 前提其实很多框架都是对另一个框架的封装,我们在学习类似的框架的时候,难免会进入误区,所以我们就应该对其进行总结归纳,对比。本文就是对hibe
- 本文实例讲述了Java使用TCP套接字实现多人聊天功能。分享给大家供大家参考,具体如下:废话不多说,直接开搞:先创建一个服务端:packag
- 本文实例讲述了C#实现软件监控外部程序运行状态的方法。分享给大家供大家参考。具体方法如下:需要 * 一个程序,用于监控另一个程序运行状态,一旦
- 这篇文章主要介绍了Java调用明华RF读写器DLL文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 一、自动装配1、四种类型的自动装配类型解释xml 配置byName根据 Bean 的 name 或者 id<bean id=”bean
- using System; using System.IO; using System.Data; using System.Text; u
- 场景:使用Fragment实现切页。类结构:一:ActivityActivity中使用getSupportFragmentManager()
- Redisson分布式锁之前的基于注解的锁有一种锁是基本redis的分布式锁,锁的实现我是基于redisson组件提供的RLock,这篇来看
- 前言:在Java项目中,有两个主要的构建系统:Gradle和Maven。构建系统主要管理潜在的复杂依赖关系并正确编译项目。还可以将已编译的项
- 存储的可选项Android 的文件系统类似于其他平台的基于磁盘的文件系统。包括以下几种存储类别:App 私有的存储空间共享的存储空间Pref
- 自定义TypeHandler映射JSON类型为List1. 实体类这里只展示需要映射的字段,分别在所需映射的字段和实体类上添加注解。&nbs
- 说实话,对于xUtils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发
- 经过一番搜索发现,java操纵excel文件常用的有jxl和poi两种方式,孰好孰坏看自己需求而定。其中最主要的区别在于jxl不支持.xls
- filter自定义过滤器 增加了 对验证码的校验package com.youxiong.filter;import com.y
- 源码:class T {int m = 8;}T t = new T();汇编码:0 new #2 <T>3 dup4 invo
- 前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成