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

来源:互联网 发布:c语言||什么意思 编辑:程序博客网 时间:2024/04/28 22:45

上期回顾:上期中公司开业不久遇到了一个问题,因为公司的员工只会开发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();}

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


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

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

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

原创粉丝点击