抽象工厂模式
2016-01-03 19:03
155 查看
用户需求:
用程序模拟以下产品线并代码实现
UML类图:
抽象工厂模式有具体产品从客户代码中分离、容易改变产品的系列以及将一个系列的产品族统一到一起创建三个优点。
具体代码如下:
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace 设计模式作业
{
public class MyClass
{
public interface Burger {
string getBurger();
}
public class KFCBurger :Burger{
public string getBurger() {
return "我是KFC的巨无霸汉堡";
}
}
public class MCBurger : Burger {
public string getBurger()
{
return "我是McDonalds的巨无霸汉堡";
}
}
public interface Chicken {
string getChicken();
}
public class KFCChicken : Chicken {
public string getChicken()
{
return "我是来自KFC的炸鸡";
}
}
public class MCChicken : Chicken {
public string getChicken()
{
return "我是来自McDonalds的炸鸡";
}
}
public interface Drink {
string getDrink();
}
public class KFCDrink : Drink {
public string getDrink()
{
return "我是来自KFC的咖啡";
}
}
public class MCDrink : Drink {
public string getDrink()
{
return "我是来自McDonalds的橙汁";
}
}
public interface AbstractFactory {
Burger createBurger();
Chicken createChicken();
Drink createDrink();
}
public class KFCFactory : AbstractFactory {
public Burger createBurger() {
return new KFCBurger();
}
public Chicken createChicken() {
return new KFCChicken();
}
public Drink createDrink() {
return new KFCDrink();
}
}
public class MCFactory : AbstractFactory
{
public Burger createBurger()
{
return new MCBurger();
}
public Chicken createChicken()
{
return new MCChicken();
}
public Drink createDrink()
{
return new MCDrink();
}
}
}
}
运行结果:
点击KFC按钮
创建KFC的Burger
创建KFC的Chicken
创建KFC的Drink
点击McDonalds按钮
创建McDonalds的Burger
创建McDonalds的Chicken
创建McDonalds的Drink
用程序模拟以下产品线并代码实现
UML类图:
抽象工厂模式有具体产品从客户代码中分离、容易改变产品的系列以及将一个系列的产品族统一到一起创建三个优点。
具体代码如下:
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace 设计模式作业
{
public class MyClass
{
public interface Burger {
string getBurger();
}
public class KFCBurger :Burger{
public string getBurger() {
return "我是KFC的巨无霸汉堡";
}
}
public class MCBurger : Burger {
public string getBurger()
{
return "我是McDonalds的巨无霸汉堡";
}
}
public interface Chicken {
string getChicken();
}
public class KFCChicken : Chicken {
public string getChicken()
{
return "我是来自KFC的炸鸡";
}
}
public class MCChicken : Chicken {
public string getChicken()
{
return "我是来自McDonalds的炸鸡";
}
}
public interface Drink {
string getDrink();
}
public class KFCDrink : Drink {
public string getDrink()
{
return "我是来自KFC的咖啡";
}
}
public class MCDrink : Drink {
public string getDrink()
{
return "我是来自McDonalds的橙汁";
}
}
public interface AbstractFactory {
Burger createBurger();
Chicken createChicken();
Drink createDrink();
}
public class KFCFactory : AbstractFactory {
public Burger createBurger() {
return new KFCBurger();
}
public Chicken createChicken() {
return new KFCChicken();
}
public Drink createDrink() {
return new KFCDrink();
}
}
public class MCFactory : AbstractFactory
{
public Burger createBurger()
{
return new MCBurger();
}
public Chicken createChicken()
{
return new MCChicken();
}
public Drink createDrink()
{
return new MCDrink();
}
}
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace 设计模式作业 { public partial class WebForm1 : System.Web.UI.Page { MyClass.AbstractFactory af = new MyClass.KFCFactory(); protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { MyClass.Burger kfcburger = af.createBurger(); Label1.Text = kfcburger.getBurger(); } protected void Button2_Click(object sender, EventArgs e) { MyClass.Chicken kfcckicken = af.createChicken(); Label1.Text = kfcckicken.getChicken(); } protected void Button3_Click(object sender, EventArgs e) { MyClass.Drink kfcdrink = af.createDrink(); Label1.Text = kfcdrink.getDrink(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace 设计模式作业 { public partial class WebForm2 : System.Web.UI.Page { MyClass.AbstractFactory af = new MyClass.MCFactory(); protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { MyClass.Burger mcburger = af.createBurger(); Label1.Text = mcburger.getBurger(); } protected void Button2_Click(object sender, EventArgs e) { MyClass.Chicken mcchicken = af.createChicken(); Label1.Text = mcchicken.getChicken(); } protected void Button3_Click(object sender, EventArgs e) { MyClass.Drink mcdrink = af.createDrink(); Label1.Text = mcdrink.getDrink(); } } }
运行结果:
点击KFC按钮
创建KFC的Burger
创建KFC的Chicken
创建KFC的Drink
点击McDonalds按钮
创建McDonalds的Burger
创建McDonalds的Chicken
创建McDonalds的Drink
相关文章推荐
- 数据结构JAVA图的基本操作
- C#使用ping命令检查设备状态
- 图像检索中BOW和LSH的一点理解
- 上天不需要你成功,只需要你尝试。waiting for life is waiting for death!
- C++程序设计课后习题及解答(第八章)
- 【木吉】天空之♂城-献给人类的先♂驱者木吉
- python学习笔记-Day10--(twisted)
- Ternary Calculation
- 数据库schema设计与优化
- centos系统python版本2.6升级到2.7
- 数据结构JAVA内部排序
- Objective-C开发者,一天学会swift
- SPI
- bzoj1856 字符串 组合数学
- java获取Class对象的几种方法
- 大话设计模式-适配器
- 收藏的网址
- java数据结构二叉树的遍历和二叉查找树
- 【LWJGL2 WIKI】【辅助库篇】Slick-Util库:第三部分-读取TrueType字体
- linux 内核模块编程之环境搭建(一)