详解。。。设计模式2——工厂。。。studying

来源:互联网 发布:dnf趣味数据网址 编辑:程序博客网 时间:2024/05/20 01:10

设计模式2——工厂

★ 场景和问题

Java程序开发讲究面向接口编程,隐藏具体的实现类,可是如何得到接口呢?

工厂类的命名规范:***Factory
单例工厂方法的命名规范:getInstance()

工厂的本质是“选择实现”

工厂、接口和实现类之间的技术边界:工厂只负责选择实现,实现类才做真正的实现,

而接口是限定到底实现什么东西和返回什么东西,三者之间分工明确、各负其责。


java代码实现:

package cn.hncu.patterns.exercise.factory;import cn.hncu.patterns.exercise.factory.inter.A;import cn.hncu.patterns.exercise.factory.model.AFactory;/* * 工厂实现测试: * 验证工厂方法是选择实现, * 接口指定功能, * 实现类实现功能, * 工厂选择实现类, * 为客户提供不同的功能, * 也就是返回不同的接口。 * 目的: * 工厂选择功能。 * 实现类隐藏。 * 接口给客户。 */public class Client {public static void main(String[] args) {A a1 = AFactory.createA1();A a2 = AFactory.createA2();A a3 = AFactory.createA3();a1.t1();// 输出1111111111111a2.t1();// 输出2222222222222a3.t1();// 输出33333}}

package cn.hncu.patterns.exercise.factory.model;import cn.hncu.patterns.exercise.factory.imp.ImpA1;import cn.hncu.patterns.exercise.factory.imp.ImpA2;import cn.hncu.patterns.exercise.factory.imp.ImpA3;import cn.hncu.patterns.exercise.factory.inter.A;public class AFactory {public AFactory() {}/* * 使用类反射, * 就可以把下列三个函数合并成一个函数 */public static A createA1() {A a = new ImpA1();return a;}public static A createA2() {A a = new ImpA2();return a;}public static A createA3() {A a = new ImpA3();return a;}}

package cn.hncu.patterns.exercise.factory.inter;public interface A {public abstract void t1();}

package cn.hncu.patterns.exercise.factory.imp;import cn.hncu.patterns.exercise.factory.inter.A;public class ImpA1 implements A {@Overridepublic void t1() {System.out.println("1111111111111");}}

package cn.hncu.patterns.exercise.factory.imp;import cn.hncu.patterns.exercise.factory.inter.A;public class ImpA2 implements A {@Overridepublic void t1() {System.out.println("2222222222222");}}

package cn.hncu.patterns.exercise.factory.imp;import cn.hncu.patterns.exercise.factory.inter.A;public class ImpA3 implements A {@Overridepublic void t1() {System.out.println("33333");}}








0 0
原创粉丝点击