`
cyxlgzs
  • 浏览: 89926 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java实践之路(设计模式)——工厂模式(工厂方法)

 
阅读更多

上期回顾:上期中公司开业不久遇到了一个问题,因为公司的员工只会开发java和C#软件,由于项目多员工无法去学习更多的开发语言(修改代码困难),导致接的php项目没人做。公司需要重新规划,根据这次的教训我将分部门来管理。分别为java部,C#部,准备找一些懂php的人来成立php部。于是先调整原来的公司结构

实现:首先一个公司的职能

public interface Factory {
	Programmer getProgrammer();
}

java部门职能

public class JavaFactory implements Factory {

	public Programmer getProgrammer() {
		return new JavaProgrammer();
	}

}

C#部门职能

public class CsharpFactory implements Factory {

	public Programmer getProgrammer() {
		return new CsharpProgrammer();
	}

}

原有的结构已经调整好了,现在招一批懂php的开发人员

public class PhpProgrammer implements Programmer {

	public void develop() {
		System.out.println("I am develop php softeware");
	}

}

将这个php开发人员组成一个新部门,php部门

public class PhpFactory implements Factory {

	public Programmer getProgrammer() {
		return new PhpProgrammer();
	}

}

这样我的php项目就有人做了

public static void main(String[] args) {
		System.out.println("I want a php programmer");
		Factory factory=new PhpFactory();
		Programmer programmer=factory.getProgrammer();
		programmer.develop();
	}

这样我就不用愁了,管他今后接待什么开发语言的项目,我只要照这个方法,原来的员工也满意,我也轻松了。

没过几天我还整又接了一个项目,客户说要用ruby开发。看到原来部门的那些员工个个忙的,我也不想再去说了。找一批会ruby的成立一个ruby部门来负责这个吧

public class RubyProgrammer implements Programmer {

	public void develop() {
		System.out.println("I am develop ruby softeware");
	}

}

public class RubyFactory implements Factory {

	public Programmer getProgrammer() {
		return new RubyProgrammer();
	}

}

开工

public static void main(String[] args) {
		System.out.println("I want a ruby programmer");
		Factory factory=new RubyFactory();
		Programmer programmer=factory.getProgrammer();
		programmer.develop();
	}

哈哈,简单方便(当然这样的例子只是为了说明问题,现实中是不存在的)。


洋洋得意了好一阵子。慢慢的公司的规模变大,各方面的实力都在增加。于是我打算找几个销售人员来自己卖产品。按照原来的设计,发现问题来了。

原来公司只搞开发,销售人员进来和原来的结构肯定是大不一样了(工厂不再是生产一类东西了)。公司还有待调整

期待下期的抽象工厂模式来解决这个问题

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics