learning之工厂方法模式
来源:互联网 发布:淘宝店铺发货无需物流 编辑:程序博客网 时间:2024/06/09 17:51
本篇是工厂类设计模式简单学习示例。
一、工厂方法:
1、普通(简单)工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
public interface Creator { public void creat();}//实现类:public class Human implements Creator{ @Override public void creat() { System.out.print("Create human"); }}public class Monkey implements Creator{ @Override public void creat() { System.out.print("create Monkey"); }}//工厂类:public class CreateFactory { public Creator Create(String type){ Creator creator=null; if(type.equals("human")){ creator=new Human(); }else if(type.equals("monkey")){ creator=new Monkey(); } return creator; }}
2、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。
//工厂类实现不同接口public class CreateFactory { public Creator CreateHuman(){ return new Human(); } public Creator CreateMonkey(){ return new Monkey(); }}
3、静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
public class CreateFactory { public static Creator CreateHuman(){ return new Human(); } public static Creator CreateMonkey(){ return new Monkey(); }}
运行示例:
public class Test { public static void main(String[] args){ //普通工厂方法 CreateFactory createFactory=new CreateFactory(); Creator creator=createFactory.Create("monkey"); creator.creat(); //多个工厂方法模式 Creator creator1=createFactory.CreateHuman(); creator1.creat(); //静态工厂方法 Creator creator2=CreateFactory.CreateMonkey(); }}
二、抽象工厂模式
1、工厂方法模式产品的创建依赖工厂类,若想拓展新产品,必须对工厂类进行修改,这违背了闭包原则,所以,就有抽象工厂模式。创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码逻辑。
2、工厂模式中,一个工厂生产一个产品,所有产品派生于同一个抽象产品(或产品接口);而抽象工厂模式中,一个工厂生产多个产品,它们是一个产品族,不同的产品族的产品派生于不同的抽象产品(或产品接口)。
//工厂接口public interface factory { public void factoryCreate();}public class HumanFactory implements factory{ @Override public Creator factoryCreate() { return new Human(); }}public class MonkeyFactory implements factory{ @Override public Creator factoryCreate() { return new Monkey(); }}public class Test { public static void main(String[] args){ HumanFactory humanFactory=new HumanFactory(); Creator creator=humanFactory.factoryCreate(); creator.creat(); MonkeyFactory monkeyFactory=new MonkeyFactory(); Creator creator1=monkeyFactory.factoryCreate(); creator1.creat(); }}
阅读全文
0 0
- learning之工厂方法模式
- 之 工厂方法模式
- 工厂模式之工厂方法模式
- 工厂模式之--工厂方法模式
- 工厂模式之工厂方法模式
- 工厂模式之工厂方法模式
- 【趣解】工厂模式之简单工厂、工厂方法模式
- c++工厂模式之工厂方法
- 工厂三兄弟之工厂方法模式
- 工厂三兄弟之工厂方法模式
- 工厂三兄弟之工厂方法模式
- 工厂三兄弟之工厂方法模式
- JAVA设计模式之工厂模式之工厂方法模式
- 设计模式之工厂模式(二)之工厂方法模式
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式 之 工厂方法
- 设计模式 之 工厂方法
- HDU 1213 How Many Tables(并查集统计求不同集合个数)
- iOS
- 并行计算--第一章
- html中input输入框如何限定输入数字或英文
- 两个表的关联查询
- learning之工厂方法模式
- 关于vs、fs、索引数组的理解总结--适合新手
- Linux下Jenkins 安装与配置
- 从萌芽到当今——浅谈互联网架构的演进
- springmvc绑定pojo
- ViewPage中Fragment替换失败的解决方法
- Hibernate框架02
- 【Question03】使用 Spring mvc 框架的时候如何处理乱码问题
- 数据结构总结 & 二叉树遍历