简单工厂模式( factory)是类的创建模式,又叫静态工厂方法(static factory method)模式。
简单工厂模式就是由一个工厂类根据传入的参数决定创建哪一种的产品类。
有4个角色:
工厂类角色:是具体产品类角色直接调用者。
抽象产品角色:接口或抽象类,负责具体产品角色的定义,及与客户端的交互。
具体产品角色:被工厂类创建的对象,也是客户端实际操作对象。
客户端:调用工厂类产生实例,并调用实例的方法进行相应工作。
//抽象产品
public intece people{
public void say();
}
//具体产品
public class chinese implements people{
public void say(){
System.out.println("说中国话");
}
}
//具体产品
public class american implements people{
public void say(){
System.out.println("speak english");
}
}
//工厂类
public class peopleFactory{
public static people create(int type){
if(type==1){
return new chinese();
}else if(type==2){
return new american();
}
}
}
//客户端
public class test{
public static void main(String []args){
people p=peopleFactory.create(1);
p.say();
p=peopleFactory.create(2);
p.say();
}
}
工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。
首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
工厂方法模式(Factory Method pattern)是最典型的模板方法模式(Templete Method pattern)应用。
如图:

基于面向接口编程的原理,创建部分成为抽象工厂与实体工厂,创建出的对象成为抽象产品与实体产品。你可能知道为什么它能解决上面的问题了:多了一个新对象,只需添加一套对应的工厂和产品就可以了,不需要修改原代码,或只需进行少量的修改。
具体:
实体工厂实现抽象工厂,实体产品实现抽象产品;
抽象工厂生产抽象产品,实体工厂生产实体产品;
实体工厂A生产实体产品A,实体工厂B生产实体产品B。
//抽象产品
public intece Icar{
public void docar();
}
//实体产品A
public class bwm implements Icar{
public void docar(){
System.out.println("我是宝马,别摸我");
}
}
//实体产品B
public class buick implements Icar{
public void docar(){
System.out.println("我是别克,很酷");
}
}
//抽象工厂
public intece Icactory{
public Icar createCar();
}
//实体工厂A
public class bmwFactory implements Icactory{
public Icar createCar(){
return new bwm();
}
}
//实体工厂B
public class buickFactory implements Icactory{
public Icar createCar(){
return new buick();
}
}
//客户端测试
public class test{
public static void main(String []args){
Icactory factory=new bmwFactory();
Icar bwm= factory.createCar();
bwm.docar();
factory=new buickFactory();
Icar buick= factory.createCar();
buick.docar();
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23649-1.html
也许是随意惯了
北洋不得不拱手让出制海权甚至一放弃自己的旅顺大本营二躲进威海大本营而全军覆没
永世不变苏音么么哒QAQ让我这种耳力特别好的如何生存QuQ