复合享元涉及的角色如下: 1、抽象享元角色 2、具体享元 3、复合享元(复合享元是由单纯具体享元复合而成的)//如果是简单享元这条没有 4、享元工厂 5、客户端 简单享元演示代码如下using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace FlyweightFactory{ class Program { //抽象享元 abstract class Cause //事业 { abstract public void OutInput(string name);//输出所从事的行业 } //具体享元(互联网) class IT : Cause { private string work = "从事互联网行业"; override public void OutInput(string name) { Console.WriteLine("{0} 是{1}", name, work); } } //具体享元(房地产) class House : Cause { private string work = "从事房地产行业"; override public void OutInput(string name) { Console.WriteLine("{0} 是{1}", name, work); } } //(享元工厂) class CauseFactory { private Hashtable flyweights = new Hashtable(); // 构造函数(享元工厂) 享元工厂作用:就是把多个对象的实例放在一起,好供客户端动态调用 public CauseFactory() { flyweights.Add("I", new IT()); flyweights.Add("H", new House()); } //得到从事的事业(享元) public Cause GetCause(string key) { return ((Cause)flyweights[key]); } } //客户端 static void Main(string[] args) { string MaYun = "马云"; string WangShi = "王石"; CauseFactory f = new CauseFactory(); //根据不同类别判别从事那个行业 Cause c1 = f.GetCause("I");//字母I对应对象IT行业 c1.OutInput(MaYun);//输出马云所从事的行业 Cause c2 = f.GetCause("H");//字母H对应对象House行业 c2.OutInput(WangShi);//输出王石所从事的行业 } }} 享元模式要点 1、本设计模式主要解决面向对象的代价问题。 2、本模式通过共享对象来减少系统中对象实例个数,从而减少内存消耗。 转载于:https://www.cnblogs.com/xiaobaigang/archive/2007/09/28/909839.html