如何使用设计模式来构造系统--(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)
我们来看看我们的员工类的代码,注意注释的文字.
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)
相关文章推荐
- 如何使用设计模式来构造系统--(1)
- 如何使用设计模式来构造系统--(3)
- 如何使用设计模式来构造系统--(8)
- 如何使用设计模式来构造系统(索引贴)
- 如何使用设计模式来构造系统(索引贴)
- 如何使用设计模式来构造系统--(2)
- 如何使用设计模式来构造系统--(5)
- 如何使用设计模式来构造系统--(9)
- 如何使用设计模式来构造系统--(1)
- 如何使用设计模式来构造系统--(6)
- 如何使用设计模式来构造系统--(9)
- 如何使用设计模式来构造系统--(2)
- 如何使用设计模式来构造系统--(3)
- 如何使用设计模式来构造系统--(2)
- 如何使用设计模式来构造系统--(8)
- 如何使用设计模式来构造系统--(7)
- 如何使用设计模式来构造系统--(7)
- 如何使用设计模式来构造系统--(6)
- 如何使用设计模式来构造系统--(1)
- 如何使用设计模式来构造系统--(5)