博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最简单的工厂模式
阅读量:7207 次
发布时间:2019-06-29

本文共 1227 字,大约阅读时间需要 4 分钟。

你想如果有多个类似的类,我们就需要实例化出来多个类。这样代码管理起来就太复杂了。 这个时候你就可以采用工厂方法来封装这个问题。
public interface IProduct { }    public class ConcreteProductA : IProduct { }    public class ConcreteProductB : IProduct { }    public class Factory    {        public IProduct Create()        {            // 工厂决定到底实例化哪个子类。            return new ConcreteProductA();        }    }

那么再延伸下,如果我要生产B怎么办

一般我们会想到,加入参数,好,说到参数,你想怎么加,呵呵,设计模式的作者给我一个例子,我觉得非常好,如果我们一般人,我想多数这么做

public IProduct Create(IProduct product)        {            //判断B是否实现了接口            //B b = new B();            //if (b.GetType().GetInterface("ISay") != null)            //{            //    //如果实现了接口“ISay”,...            //}            // 工厂决定到底实例化哪个子类。                 }

但是我觉得作者这里给出了另外一种思维模式,让我们看看

public enum Category    {        A,        B    }    public static class ProductFactory    {        public static IProduct Create(Category category)        {            switch (category)            {                case Category.A:                    return new ConcreteProductA();                case Category.B:                    return new ConcreteProductB();                default:                    throw new NotSupportedException();            }        }    }

并不是说这样非常好,但是这种思想还是值得在某些地方借鉴

转载地址:http://oaoum.baihongyu.com/

你可能感兴趣的文章
【WPF】动态设置Binding的ConverterParameter转换器参数
查看>>
Nginx配置教程
查看>>
linux中查看和开放端口
查看>>
poj3181 Dollar Dayz
查看>>
求助下 Ubuntu 15.10(64 位)下安装 pyspider 下的问题 - V2EX
查看>>
SQL Server外连接、内连接、交叉连接
查看>>
Ajax-jQuery_Ajax_实例 ($.ajax、$.post、$.get)
查看>>
Python实现web动态服务器
查看>>
新客户上云 –虚拟机及相关服务常见问题集锦
查看>>
IntelliJ Idea 常用快捷键列表
查看>>
各数据库连接配置与maven依赖安装
查看>>
Linux(centOS)手动安装删除Apache+MySQL+PHP+Memcached原创无错版
查看>>
Nginx的启动(start),停止(stop)命令
查看>>
代码生成工具更新--快速生成Winform框架的界面项目
查看>>
Jquery根据JSON生成Table
查看>>
[Oracle]Sqlplus 中使用 new_value
查看>>
【HTTP】 认证和单点登录 【瞎写的…】
查看>>
微信小程序-上传多张图片加进度条(支持预览、删除)
查看>>
Java基础-SSM之mybatis快速入门篇
查看>>
error C2220: 警告被视为错误 - 没有生成“object”文件
查看>>