08-工厂方法

news/2024/7/4 13:40:41

1. 简介

  工厂方法:符合依赖倒置原则、单一职责、开闭原则。

  与简单工厂的区别:简单工厂是在一个工厂里生成多个不同的类,而工厂方法是一个对象对应一个生成工厂,这些工厂都实现了一个共同的接口IFactory,很好的符合了依赖倒置原则、单一职责、开闭原则, 每个工厂只负责创建对象。

2. 核心代码

1   public interface IFactory
2     {
3         IPeople CreateInstance();
4     }
1   public class ChineseFactory : IFactory
2     {
3         public IPeople CreateInstance()
4         {
5             return new Chinese();
6         }
7     }
1   public class JanpaneseFactory : IFactory
2     {
3         public IPeople CreateInstance()
4         {
5             return new Janpanese();
6         }
7     }
1  public class AmericaFactory : IFactory
2     {
3         public IPeople CreateInstance()
4         {
5             return new America();
6         }
7     }
 1 static void Main(string[] args)
 2         {
 3             IFactory iFactory1 = new ChineseFactory();
 4             IFactory iFactory2 = new AmericaFactory();
 5             IFactory iFactory3 = new JanpaneseFactory();
 6 
 7             IPeople iPeople1 = iFactory1.CreateInstance();
 8             IPeople iPeople2 = iFactory2.CreateInstance();
 9             IPeople iPeople3 = iFactory3.CreateInstance();
10 
11 
12             iPeople1.Eating();
13             iPeople2.Eating();
14             iPeople3.Eating();
15 
16             Console.ReadKey();
17 
18         }

 

转载于:https://www.cnblogs.com/yaopengfei/p/7138143.html


http://www.niftyadmin.cn/n/706648.html

相关文章

ubuntu系统中Qt creator 编辑和应用使用中文输入法

在ubuntu系统的GUI开发过程中遇到在编辑器里面不能使用中文输入法,前提我已经安装了搜狗输入法,但是还是不能使用,原因是QT的库里没有最新fcix的库,、 没有安装搜狗的输入法的 https://pan.baidu.com/s/1pLNo9fX 我这里百度云有链…

剑指offer——面试题10:斐波那契数列

个人答案: 1 #include"iostream"2 #include"stdio.h"3 #include"string.h"4 using namespace std;5 typedef long long ll;6 const int MAXN10000;7 8 ll fib[MAXN];9 ll Fibonacci(int n) 10 { 11 if(fib[n]!-1) 12 ret…

395. Longest Substring with At Least K Repeating Characters

题目要求 Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T appears no less than k times.Example 1:Input: s "aaabb", k 3Output: 3The longest substring is "aaa&qu…

Asp.Net实现JS前台带箭头的流程图方法总结!(个人笔记,信息不全)

Asp.Net实现JS前台带箭头的流程图方法总结!(持续更新中) 一、返回前台json格式 json5 "[{\"Id\":2259,\"Name\":\"高中\"},{\"Id\":2259,\"tName\":\"初中\"},{"Id&…

Java 对象的继承,抽象类,接口

子父级继承 关键字 extends 首先创建一个父类 1 class Fu 2 { 3 String name; 4 int a1; 5 public void word() 6 { 7 System.out.println("工作"); 8 …

Selenium2+python自动化63-简易项目搭建

前言 到unittest这里基本上可以搭建一个简易的项目框架了,我们可以用一条run_main.py脚本去控制执行所有的用例,并生成报告,发送邮件一系列的动作 一、新建工程 1.打开pycharm左上角File>New Project,在Location位置输入项目名…

后端_服务器

本地搭建服务器 Nginx官网下载,解压放到本地文件夹.打开文件nginx.conf文件 ,做出以下修改:server {# 启动后的端口listen 8880; # 启动时的地址server_name localhost;# 启动后,地址栏输入: localhost:8880, 默认会在html文件夹下找 index.html文件locati…

2017年我国电力供需形势预测分析 清洁能源装机比重将提升

2016年,我国经济实现了“十三五”良好开局,GDP增速保持平稳,全社会用电量增速明显回升。2017年,我国面临着更为复杂的外部环境,经济下行压力仍然较大,电力供需形势将如何变化?有关专家进行了分析…