博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式开篇 - 简单工厂模式
阅读量:7235 次
发布时间:2019-06-29

本文共 2631 字,大约阅读时间需要 8 分钟。

  最近在整理、学习设计模式相关的知识,大部分是些学习笔记或者网络上整理过来的资料,以利于复习、理解之用。

  简单工厂设计模式:

1、接口相关知识复习:

1 一种特殊的抽象类,方法都是抽象的,属性都是常量2 接口的思想:封装隔离-- 对被隔离体的行为的封装或者对被隔离体的职责的封装3 使用接口的好处:隔离开外部调用和内部是实现 -- 接口是系统可插拔性的保证4 接口和抽象类的选择:5     优先选用接口6     如果要定义子类的行为又要为子类提供公共功能的时候选择抽象类7 面向接口编程是Java编程中的一个重要的原则。

2、在java中非常重要的三层:

每一个部分之间的通信都是通过接口进行的,实际上在每一个模块内部也都是通过接口进行通信的。

在Java中实际上子系统(subSystem)、模块(Module)、系统(System)、组件(Component)都是能完成一定功能的封装体。封装体提供给外部的调用方式都是通过接口进行的。

3、经典问题:

请看代码:

View Code
Api.javapackage com.xinye.designpattern.simplefactory;/** * 接口(提供通用的、抽象的、非具体的功能) * @author xinye * */public interface Api {    public void test(String s);}Impl.javapackage com.xinye.designpattern.simplefactory;/** * 具体的接口实现类 * @author 实现类 * */public class Impl implements Api {    @Override    public void test(String s) {        System.out.println("您输入的是:" + s);    }}Client.javapackage com.xinye.designpattern.simplefactory;/** * 客户端类 * @author xinye * */public class Client {    /**     * @param args     */    public static void main(String[] args) {        Api api = new Impl();        api.test("我正在学习设计模式");    }}

问题:客户端需要知道接口和具体的实现类。

由此可见简单工厂模式的主要功能是:不想让客户端知道具体的实现的时候可以使用。

4、解决办法:

代码:

1 Api.java 2 package com.xinye.designpattern.simplefactory; 3 /** 4  * 接口(提供通用的、抽象的、非具体的功能) 5  * @author xinye 6  * 7  */ 8 public interface Api { 9     public void test(String s);10 }11 12 ImpA.java13 package com.xinye.designpattern.simplefactory;14 /**15  * 实现类A16  * @author xinye17  *18  */19 public class ImplA implements Api {20 21     @Override22     public void test(String s) {23         System.out.println("实现类A - 您输入的内容:" + s);24     }25 26 }27 28 29 ImplB.java30 package com.xinye.designpattern.simplefactory;31 /**32  * 实现类B33  * @author xinye34  *35  */36 public class ImplB implements Api {37 38     @Override39     public void test(String s) {40         System.out.println("实现类B - 您输入的内容:" + s);41     }42 43 }44 45 46 Factory.java47 package com.xinye.designpattern.simplefactory;48 /**49  * 工厂类50  * @author xinye51  *52  */53 public class Factory {54     public static Api createApi(int condition){55         Api api = null;56         if(condition == 1){57             api = new ImplA();58         }else{59             api = new ImplB();60         }61         return api;62     }63 }64 65 66 Client.java67 package com.xinye.designpattern.simplefactory;68 /**69  * 客户端类70  * @author xinye71  *72  */73 public class Client {74 75     /**76      * @param args77      */78     public static void main(String[] args) {79         Api api = Factory.createApi(1);80         api.test("工厂类中创建的对象");81 82     }83 84 }

 

 

转载于:https://www.cnblogs.com/xinye/archive/2013/03/25/2980006.html

你可能感兴趣的文章
Coda 2.5 发布,Mac 编辑器软件
查看>>
Vue.js —— 轻量级 JavaScript 框架(国人开发)
查看>>
《计算机科学导论》一2.1 引言
查看>>
《Linux KVM虚拟化架构实战指南》——2.2 安装配置RHEV虚拟化所需服务器
查看>>
《大型网站服务器容量规划》一3.3 其他容量规划方法
查看>>
《极客与团队》一第一章 天才程序员的传说
查看>>
《Python爬虫开发与项目实战》——3.2 HTTP请求的Python实现
查看>>
《IP路由协议疑难解析》一第1章 理解IP路由选择
查看>>
《Adobe Illustrator CS4中文版经典教程》—第1课 了解工作区
查看>>
《CCNP TSHOOT 300-135认证考试指南》——5.7节二层EtherChannel故障检测与排除
查看>>
阿里云大学认证体系发布
查看>>
微软推出用户呼声最高的 Windows 10 桌面功能
查看>>
BSP模型与实例分析(一)
查看>>
《Java遗传算法编程》—— 2.7 交叉伪代码
查看>>
《JavaScript设计模式》——1.11 换一种方式使用方法
查看>>
如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
查看>>
信息图 | 全世界70亿人在做些什么?
查看>>
《树莓派Python编程入门与实战(第2版)》——1.4 其他不错的外围设备
查看>>
如何在 Ubuntu 中播放3D电影
查看>>
13个Cat命令管理(显示,排序,建立)文件实例
查看>>