博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSharp设计模式读书笔记(2):工厂方法模式(学习难度:★★☆☆☆,使用频率:★★★★★)...
阅读量:6072 次
发布时间:2019-06-20

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

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。

模式角色与结构:

工厂方法模式是类的创建模式,其用意是定义一个创建产品对象的接口,将实际创建工作推迟到子类中。

示例代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace CSharp.DesignPattern.FactoryMethodPattern{    class Program    {        static void Main(string[] args)        {            ICreator footballCreator = new FootballCreator(); // build factory            ICreator baseketballCreator = new BaseketballCreator(); // build factory            IAthlete footballAthlete = footballCreator.Create(); // build product            IAthlete basketballAthlete = baseketballCreator.Create(); // build product            footballAthlete.Run();            footballAthlete.Jump();            basketballAthlete.Run();            basketballAthlete.Jump();            Console.ReadLine();        }    }    // Product    interface IAthlete     {        void Run();        void Jump();    }    class FootballAthlete : IAthlete    {        public void Run()        {            Console.WriteLine("FootballAthlete Run...");        }        public void Jump()        {            Console.WriteLine("FootballAthlete Jump...");        }    }    class BaseketballAthlete : IAthlete    {        public void Run()        {            Console.WriteLine("BaseketballAthlete Run...");        }        public void Jump()        {            Console.WriteLine("BaseketballAthlete Jump...");        }    }    // Factory    interface ICreator     {        IAthlete Create();    }    // Concrete Factory    class BaseketballCreator : ICreator     {        public IAthlete Create()        {            return new BaseketballAthlete();        }    }    // Concrete Factory    class FootballCreator : ICreator     {        public IAthlete Create()        {            return new FootballAthlete();        }    }}

 

 

转载于:https://www.cnblogs.com/thlzhf/archive/2012/11/27/2791525.html

你可能感兴趣的文章
我的友情链接
查看>>
spring mvc 的搭建
查看>>
mac 终端 常用命令
查看>>
linux的历史及大事年表
查看>>
LINUX文件系统与操作命令
查看>>
一.浅述Byte
查看>>
解决运行eclipse内存不足的问题
查看>>
iOS 终端常用命令
查看>>
javascript call用法的简单介绍
查看>>
菜鸟学Linux 第015篇笔记 bash脚本 条件判断
查看>>
在linux上挂载windows的共享目录
查看>>
Jqgrid -- search button doesn't work with Jquery 1.8.0 or greater
查看>>
XtraBackup物理备份MySQL的流程
查看>>
Java项目对jar包加密流程
查看>>
Ubuntu 16.04搭建nexus管理docker image
查看>>
dell srvadmin 安装部署
查看>>
SQL语句的预编译
查看>>
数字签名
查看>>
Windows Server 2003 R2 Enterprise Edition With SP2 VOL 下载地址及安装密钥
查看>>
条形码组件Spire.Barcode 教程:在Java中扫描条形码
查看>>