C#设计模式:工厂模式
2024-10-07 10:01:49
一,工厂模式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace _2._1工厂模式
{
class Program
{
static void Main(string[] args)
{
IPeopleFactory a = new ChinePeople();
Console.Write("中国人人穿了" + a.ShowShoes("红色") + "," + a.ShowClothes("红色"));
IPeopleFactory b = new USAPeople();
Console.Write("美国人穿了" + b.ShowShoes("白色") + "," + b.ShowClothes("白色"));
}
}
public interface IPeopleFactory
{
string ShowShoes(string type);
string ShowClothes(string type);
}
public class ChinePeople : IPeopleFactory
{
public string ShowShoes(string type)
{
return type + "上衣";
}
public string ShowClothes(string type)
{
return type + "裤子";
}
}
public class USAPeople : IPeopleFactory
{
public string ShowShoes(string type)
{
return type + "上衣";
}
public string ShowClothes(string type)
{
return type + "裤子";
}
}
}
二,主要用于隔离类对象的使用者和具体类型之间的耦合关系和实现多态等
三,有时候我们有种疑惑,为什么我们不使用工厂模式,而使用现在的IOC呢?
其实本质上还是因为IOC是通过反射机制来实现的。当我们的需求出现变动时,工厂模式会需要进行相应的变化。但是IOC的反射机制允许我们不重新编译代码,因为它的对象都是动态生成的。
最新文章
- Solve VS2010 Error ";Exceptions has been thrown by the target of an invocation";
- Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案
- Apche Kafka 的生与死 – failover 机制详解
- 项目开发中遇到的extjs常见问题
- 用户View,五大布局
- CentOS7 升级python同时解决yum损坏问题
- C++ 学习资料搜寻与学习(第一期)(未完待续)
- 如何在TableView上添加悬浮按钮
- ssh登陆笔记📒
- mac 下 wget 安装
- js生成word中图片处理
- The server's host key is not cached in the registry. You have no guarantee that the server……
- Asp.net core Razor 页面
- 异步Async
- ELK菜鸟手记 (二) - 高级配置之多应用索引过滤
- Java -- 获取指定接口的所有实现类或获取指定类的所有继承类
- 从零开始学习Docker
- Spring Cloud构建微服务架构(三)断路器
- linux hosts.equiv设置解析
- 那些实用的Nginx规则