using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FactoryAbstruct
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("北京生廠商來了");
Factory bjFactory = new BJFactory(); /*首先產生一個工廠*/
Cement cement1 = bjFactory.createCement();
cement1.create();
Rebar rebar1 = bjFactory.createRebar();
rebar1.create();
Console.WriteLine();
Console.WriteLine("深圳生產商來了");
Factory szFactory = new SZFactory();
Cement cement2 = szFactory.createCement();
cement2.create();
Rebar rebar2 = szFactory.createRebar();
rebar2.create();
}
}
/*有一個工廠 有兩家分廠, 兩家分廠又分別生產這不同的產品*/
/*1. 首先工廠生產水泥(Cement)和鋼筋(Rebar)*/
public abstract class Cement
{
public abstract void create();
}
/*2. 水泥產品 又有還集中分類*/
public class Cement1 : Cement
{
public override void create()
{
Console.WriteLine("生產一號強勁水泥");
}
}
public class Cement2 : Cement
{
public override void create()
{
Console.WriteLine("生產二號鬆軟水泥");
}
}
/*3. 鋼筋也需要生產*/
public abstract class Rebar
{
public abstract void create();
}
/*4. 鋼筋產品 又有還集中分類*/
public class Rebar1 : Rebar
{
public override void create()
{
Console.WriteLine("生產一號強勁鋼筋");
}
}
public class Rebar2 : Rebar
{
public override void create()
{
Console.WriteLine("生產二號鬆軟鋼筋");
}
}
/*5. 該工廠又兩處分廠 分別是北京工廠和深圳工廠
假設北京生產一號產品 深圳生產二號類產品*/
public abstract class Factory
{
public abstract Cement createCement();
public abstract Rebar createRebar();
}
public class BJFactory:Factory
{
public override Cement createCement()
{
return new Cement1();
}
public override Rebar createRebar()
{
return new Rebar1();
}
}
public class SZFactory:Factory
{
public override Cement createCement()
{
return new Cement2();
}
public override Rebar createRebar()
{
return new Rebar2();
}
}
}
/*畢業近一年了,學了不少金融業務, 現在覺得走技術+金融業務路線
將自己所學所想 寫成博文,和programmers共勉*/