public virtual void add(string nm, float salary) { throw new Exception("No subordinates in base employee class");} public virtual void add(AbstractEmployee emp) { throw new Exception("No subordinates in base employee class");} public IEnumerator getSubordinates() { return subordinates.GetEnumerator ();} public virtual AbstractEmployee getChild() { return null;} public float getSalaries() { float sum; AbstractEmployee esub; sum = getSalary(); IEnumerator enumSub = subordinates.GetEnumerator() ; while (enumSub.MoveNext()) { esub = (AbstractEmployee)enumSub.Current; sum += esub.getSalaries();} return sum;}}
public interface AbstractEmployee { float getSalary(); string getName(); bool isLeaf(); void add(string nm, float salary); void add(AbstractEmployee emp); IEnumerator getSubordinates(); AbstractEmployee getChild(); float getSalaries(); }
public class EmpNode:TreeNode { private AbstractEmployee emp; public EmpNode(AbstractEmployee aemp ):base(aemp.getName ()) { emp = aemp; } public AbstractEmployee getEmployee() { return emp;}} 10、 综合应用装饰模式、命令模式和状态模式实现工具条命令按钮鼠标进入时高亮显
示状态以及鼠标单击按钮后呈现凹陷状态,表明当前按钮为选中状态。 答:Decorator类 namespace CoolDec{
public interface Decorator {
void mouseDown(object sender, EventArgs e); void paint(object sender, PaintEventArgs e); }} Form1窗口
namespace CoolDec{
public class Form1 : System.Windows.Forms.Form{
private System.Windows.Forms.Button btButtonA; private CoolDecorator cdec, cqdec;