您的位置:首页 > 其它

如何使用设计模式来构造系统--(4)

2008-08-14 08:40 567 查看
在前三篇中我们设计了员工的工资,绩效将金,以及员工福利,使用了Bridge(员工和工资的组合),Stratege(工资和绩效将金的设计)以及(Singleton)单件了这些算法,然后用Decorator(装饰)将员工进行职位的装饰.这些设计在我们前面所说的场景下,是符合设计模式的意图的,但是它仍然有一些漏洞.

我们来看看我们的员工类的代码,注意注释的文字.

Code

class Program

{

static void Main(string[] args)

{

StaffAndSalaryFactory saf = new StaffAndSalaryFactory(); //实例化抽象工厂

AbstractPerson staff = saf.GetPerson(); //创建员工

staff.PersonName = "涵舍愚人";

staff.PersonSalary = saf.GetSalary();//创建员工工资

staff.PersonSalary.Salaryprize = BadPrize.badPrize;//使用单件初始化员工工资的绩效部分

TeamLeader tl = new TeamLeader(staff);//给员工组长的职务

DepartmentManager dm = new DepartmentManager(tl); //员工还是部门经理

Console.Write(dm.PersonName+"本月赢得工资="+dm.GetShouldpaid()+" 应发福利="+ dm.GetWelfare());

Console.Read();

}

输出结果:



这样我们就用抽象工厂把Person与Salary的紧耦合给解耦了,如果工资的需求变更了Staff中的Salary可以是任何的Salary子类,并不会影响到Person.

这里要说明一下,工厂方法和抽象工厂通常用单件形式,因为这两个工厂模式的职责是创建对象,所以工厂有一个就足够了,因第二篇使用了单件,这里不在赘述,只要记得工厂通常是单件就好.

(关于工厂方法和抽象工厂的区别:工厂方法创建一个产品,而抽象工厂创建一系列的产品)

下一篇:如何使用设计模式来构造系统--(5)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: