抽象工厂模式
来源:互联网 发布:淘宝店铺封店重开技巧 编辑:程序博客网 时间:2024/06/10 19:34
基本概念
1、interface中定义的方法访问权限自动被声明为public,也只能为public。2、抽象类可以不用实现接口中的方法
3、一个子类只能存在一个父类,但可以实现多个接口4、抽象类中可以拥有自己的成员变量和非抽象的方法,接口中只能存在常量和抽象方法。
5、spring框架采用工厂模式,其实就是bean工厂。
门的例子:
Door具备两个行为:open()和close(),用抽象类和接口没什么区别,但如果需要一个报警的功能,最好就是分开了
理解方式:AlarmDoor首先是Door,同时有报警功能,如果一个行为比较模糊,就设计为接口
abstract Class Door{void open();void close();}interface Alarm{void alarm();}Class AlarmDoor extends Door implements Alarm{void open(){}void close(){}void alarm(){}}
抽象类是"is-a"关系,接口是"like-a"关系,通过接口与抽象类实现多态。
抽象工厂模式
普通工厂针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。普通工厂如果扩展产品,需要在产品维度上扩展产品和产品工厂,每个产品对应一个产品工厂,导致工厂泛滥。。抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。应对产品族概念而生,增加新的产品线很容易,但是如果要增加新的产品却很难。
参考:http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html
应用
public class UserTask extends AbstractLoanTask { private Logger logger = Logger.getLogger(UserTask.class); public UserTask() { super(); task.setName("User.Task"); } @Override public void doSomething() {logger.debug("--------userTask executing----------"); } }
public class NoticeTask extends AbstractLoanTask {private Logger logger = Logger.getLogger(NoticeTask.class);public NoticeTask() {super();task.setName("NoticeTask");}@Overridepublic void doSomething() {logger.debug("--------userTask executing----------");}}
public interface LoanTask {/** * 发送消息使用 */ static String MESSAGE_STATUS = "MESSAGE_STATUS";/** * 用户相关业务使用:开户,绑定银行卡等 */ static String USER_STATUS = "USER_STATUS"; void doSomething();}
public class AbstractLoanTask implements LoanTask {private Logger logger = Logger.getLogger(AbstractLoanTask.class);public Thread task = new Thread("Task") {private boolean isRun = true;@Overridepublic void run() {while (isRun) {logger.debug(this.getName() + " Running!");doLoan();}}public void stopThread() {isRun = false;}};public AbstractLoanTask() {task.start();logger.debug("线程启动!");}@Overridepublic void doSomething() {logger.debug("AbstractTask开始");}}
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- SOAP、WSDL、Web Service详解
- web面试题
- Matlab中plot函数参数解析
- GTK的非实例化类型-interface
- linux 初级学习之文本处理工具2-6
- 抽象工厂模式
- git删除远程文件夹或文件的方法
- js操作符优先级
- Kafka从入门到实践
- 使用Angular4.0开发星级评价组件
- 解析excel+结合表单上的数据生成csv文件
- 百度地图定位
- Android studio打包所遇到的问题
- MongoDB-Java链接超时问题解决汇总