本帖最后由 张朝阳 于 2015-6-29 20:46 编辑
——- android培训、java培训、期待与您交流! ———- 简单工厂模式(simple factory)是类的创建模式,又叫静态工厂方法(static factory method)模式。 简单工厂模式就是由一个工厂类根据传入的参数决定创建哪一种的产品类。有4个角色: 1、工厂类角色:是具体产品类角色直接调用者。
2、抽象产品角色:接口或抽象类,负责具体产品角色的定义,及与客户端的交互。
3、具体产品角色:被工厂类创建的对象,也是客户端实际操作对象。
4、客户端:调用工厂类产生实例,并调用实例的方法进行相应工作。 public interface people{ public void say(); } public void say(){ public class chinese implements people{ 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 interface Icar{ public void docar(); }
public class bwm implements Icar{ public void docar(){ System.out.println("我是宝马,别摸我"); } } public class buick implements Icar{ public void docar(){ System.out.println("我是别克,很酷"); } } public interface Icarfactory{ public Icar createCar(); } public class bmwFactory implements Icarfactory{ public Icar createCar(){ return new bwm(); } } public class buickFactory implements Icarfactory{ public Icar createCar(){ return new buick(); } } public class test{ public static void main(String []args){ Icarfactory factory=new bmwFactory(); Icar bwm= factory.createCar(); bwm.docar();
factory=new buickFactory(); Icar buick= factory.createCar(); buick.docar(); } } |