设计模式之中的简单工厂,本人比较笨不会画什么类图。只想单写写对简单工厂的理解。 首先来个通用的实现接口。 [code="java"]package simpl.factory; /** * 这是一个通用的生产接口 * 就好比画一幅画 * @author zero * */ public interface Api { /** * 画画 */ public void doSomeThing(); } [/code]
这时候需要几个实现接口的类了,例如:
这两个就是我们的画画角色。
然后谁来管理呢?
最后看看,我们要求的画家画的画
看看结果,这个结构还是可以再次优化的。仔细看看代码,每次调用工厂的时候都会new出一个新的对象这样是不是有点浪费呢。所以可以工厂写成单例类
这时候需要几个实现接口的类了,例如:
package simpl.factory;
/**
* 小朋友画的画
* @author zero
*
*/
public class HumanAApi implements Api{
@Override
public void doSomeThing() {
System.out.println("花的很可爱");
}
}
package simpl.factory;
/**
* 美术大师画的画
* @author zero
*
*/
public class HummnaBApi implements Api{
@Override
public void doSomeThing() {
System.out.println("非常美");
}
}
这两个就是我们的画画角色。
然后谁来管理呢?
package simpl.factory;
/**
* 我们的工厂
*
* @author zero
*
*/
public class Factory {
public static Api getHumanA() {
return new HumanAApi();
}
public static Api getHumanB() {
return new HummnaBApi();
}
}
最后看看,我们要求的画家画的画
package simpl.factory;
/**
* 看画
*
* @author zero
*
*/
public class Client {
public static void main(String[] args) {
Api a = Factory.getHumanA();
a.doSomeThing();
Api b = Factory.getHumanB();
b.doSomeThing();
}
}
看看结果,这个结构还是可以再次优化的。仔细看看代码,每次调用工厂的时候都会new出一个新的对象这样是不是有点浪费呢。所以可以工厂写成单例类