C#设计模式——工厂方法模式Factory Method Pattern
工厂方法模式->创建型设计模式
定义:定义一个创建对象的接口,但由子类决定需要实例化那一个类。(工厂模式是我们常用的实例化对象模式了,是用工厂方法代替new 操作的一种模式,简单工厂的特点就是“简单粗暴”,通过一个含参的工厂方法,我们可以实例化任何产品类。)
代码:
-
namespace ConsoleApp1
-
{
-
public class Program
-
{
-
static void Main(String[] args)
-
{
-
Console.WriteLine("选择形状绘制:");
-
shape sh1 = ShapeFactory.GetShape(ShapeType.Square);
-
sh1.draw();
-
shape sh2 = ShapeFactory.GetShape(ShapeType.Circle);
-
sh2.draw();
-
shape sh3 = ShapeFactory.GetShape(ShapeType.Rectangle);
-
sh3.draw();
-
Console.Read();
-
}
-
}
-
/// <summary>
-
/// 形状 接口
-
/// </summary>
-
public interface shape
-
{
-
void draw();
-
}
-
/// <summary>
-
/// 矩形
-
/// </summary>
-
public class Rectangle : shape
-
{
-
public void draw()
-
{
-
Console.WriteLine("矩形实现形状的接口方法draw()。");
-
}
-
}
-
/// <summary>
-
/// 正方形
-
/// </summary>
-
public class Square : shape
-
{
-
public void draw()
-
{
-
Console.WriteLine("正方形实现形状的接口方法draw()。");
-
}
-
}/// <summary>
-
/// 圆形
-
/// </summary>
-
public class Circle : shape
-
{
-
public void draw()
-
{
-
Console.WriteLine("圆形实现形状的接口方法draw()。");
-
}
-
}
-
/// <summary>
-
/// 枚举 形状类型
-
/// </summary>
-
public enum ShapeType
-
{
-
Rectangle,
-
Square,
-
Circle
-
}
-
/// <summary>
-
/// 形状工厂
-
/// </summary>
-
public class ShapeFactory
-
{
-
/// <summary>
-
/// 通过参数决定创建的形状类型
-
/// </summary>
-
/// <param name="type"></param>
-
/// <returns></returns>
-
public static shape GetShape(ShapeType type)
-
{
-
switch (type)
-
{
-
case ShapeType.Rectangle:
-
return new Rectangle();
-
case ShapeType.Square:
-
return new Square();
-
case ShapeType.Circle:
-
return new Circle();
-
default:
-
return new Square();
-
}
-
}
-
}
-
}
结果:
特点:工厂方法模式中,具体的工厂只是生产具体的某一个产品。而抽象工厂模式的具体的工厂可以生产族产品(例如奔驰轿车、奔驰SUV、奔驰MPV)。
区别:抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一种产品的继承结构,而抽象工厂模式需要面对多个产品的继承结构。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghegic
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13