工厂模式
来源:互联网 发布:海淘宝宝衣服 编辑:程序博客网 时间:2024/06/05 08:56
工厂模式是常见的设计模式,包含简单工厂、工厂方法、抽象工厂。
由于简单工厂比较简单,故主要介绍工厂方法和抽象工厂。
工厂方法
特点
一个工厂创建一个产品,工厂和产品是一对一的关系。
盗图(^_^)
个人示例代码
-----------------产品接口类------------------public interface IProduct { public void show();}-----------------产品A----------------------public class ConcreteProductA implements IProduct { @Override public void show() { System.out.println("Product A"); }}-----------------产品B----------------------public class ConcreteProductB implements IProduct { @Override public void show() { System.out.println("Product B"); }}-----------------工厂接口类------------------public interface IFactory { public IProduct creatProduct();}-----------------工厂A----------------------public class ConcreteFactoryA implements IFactory { @Override public IProduct creatProduct() { return new ConcreteProductA(); }}-----------------工厂B----------------------public class ConcreteFactoryB implements IFactory { @Override public IProduct creatProduct() { return new ConcreteProductB(); }}
优点
- 在工厂方法中,用户只需要知道所要产品的具体工厂,无须关系具体的创建过程,甚至不需要具体产品类的类名。
- 在系统增加新的产品时,我们只需要添加一个具体产品类和对应的实现工厂,无需对原工厂进行任何修改,很好地符合了“开闭原则”。
缺点
- 每次增加一个产品时,都需要增加一个具体类和对象实现工厂,系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。
抽象工厂
特点
一个具体工厂可以制造几个产品。一对多的关系。
盗图2(^_^)
示例代码
-----------------抽象工厂接口------------public interface IFactory { IUser createUser(); IMoney createMoney();}----------------Sql工厂-----------------public class SqlFactory implements IFactory { @Override public IUser createUser() { return new SqlUser(); } @Override public IMoney createMoney() { return new SqlMoney(); }}--------------Access工厂------------public class AccessFactory implements IFactory { @Override public IUser createUser() { return new AccessUser(); } @Override public IMoney createMoney() { return new AccessMoney(); }}------------省略相关产品的代码---------
优点
- 易于交换产品系列,由于具体工厂类在一个应用中只需要在初始化的时候出现一次,这使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。
- 让创建实例过程与客户端分离,客户端通过他们的抽象接口草种实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。
阅读全文
0 0
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- Hibernate的API及配置详解
- UIswitch UISlider(基础篇)
- 推荐一款压缩js工具--yuicompressor-2.4.2.jar
- 实训第七天笔记
- Windows server 2012配置Nginx自启动
- 工厂模式
- android员工管理系统小程序
- 二维数组的使用(new,delete,初始化,输出)
- 51Nod-1765-谷歌的恐龙
- Android系列之夜间模式和日间模式的功能实现
- Eclipse新建一个web项目没有自动生成web.xml
- 设计模式(十二)adapter
- ATC作业
- Swing 利用线程来绘制两个运动的小球