简单工厂模式尽管简单,但存在一个非常严重的问题.当系统中须要引入新产品时,因为静态工厂方法通过所传入參数的不同来创建不同的产品,这必然要改动工厂类的源码,将违背"开闭原则".怎样实现添加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍另外一种工厂模式--工厂方法模式. 1 日志记录器的设计 Sunny软件公司欲开发一个系统执行日志记录器(Logger).该记录器能够通过多种途径保存系统的执行日志,如通过文件记录或数据库记录,用户能够通过改动配置文件灵活地更换日志记录方式. 在设…
public class Test { public static void main(String[] args) { Factories.test(); } } /* 设计模式之禅中的工厂模式是这样的,先定义好工厂和产品的接口,实现各个产品, 产品无需为工厂编写任何代码.工厂通过传产品类的class对象来生成一个产品,这 其中用到了反射方面的东西,我觉着这中方案会更好一点. 案例中的方案,虽然利用接口降低了耦合,但是还是有点不太舒服 */ interface Service { void m…
上一节我们已经学习了原型模式,稍微复习一下:通过重写Object 类的clone() 方法实现浅克隆,浅克隆也要实现Cloneable 标记接口.而深克隆则是将对象通过序列化和反序列化 的方式进行创建和还原. 本小结将学习的是工厂模式,这个模式在平时是特别常用的,还需好好理解.我也将举一些例子给大家 . 从生活出发 假设我们今天不想做饭,想出去吃饭.肯定选定一家好吃的川菜馆,然后我们找好位置坐下,给厨师说,我想吃糖醋排骨. 稍微等待几分钟.菜就可以做好,然后给你呈上来. 这是一个很经典的例子,我…
/** * 接口应用 */ public class Main { public static void main(String[] args) { Person p = new Person("fish7"); p.setIsay(new BeforeGong()); p.say(); p.setIsay(new AfterGong()); p.say(); } } class Person{ //只有在运行期才和say行为关联起来,这就叫面向接口编程 private String…
反射机制概念   我们考虑一个场景,如果我们在程序运行时,一个对象想要检视自己所拥有的成员属性,该如何操作?再考虑另一个场景,如果我们想要在运行期获得某个类的Class信息如它的属性.构造方法.一般方法后再考虑是否创建它的对象,这种情况该怎么办呢?这就需要用到反射! 我们.java文件在编译后会变成.class文件,这就像是个镜面,本身是.java,在镜中是.class,他们其实是一样的:那么同理,我们看到镜子的反射是.class,就能通过反编译,了解到.java文件的本来面目. 对于反射,官方…
工厂模式是一种比较常用的设计模式,其基本思想在于使用不同的工厂类型来打造不同产品的部件.例如,我们在打造一间屋子时,可能需要窗户.屋顶.门.房梁.柱子等零部件.有的屋子需要很多根柱子,而有的屋子又不需要窗户.在这样的需求下,就可以使用工厂模式. (1)工厂模式的传统实现和其弊端 下图展示了针对屋子设计的传统工厂模式架构图: 上图的设计思路是: ①使用者告诉工厂管理者需要哪个产品部件: ②工厂管理者分析使用者传入的信息,生成合适的实现工厂接口的类型对象: ③通过工厂生产出相应的产品,返回给使用者一…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!…
Program: 请采用采用简单工厂设计模式,为某个汽车销售店设计汽车销售系统,接口car至少有方法print(), 三个汽车类:宝马.奥迪.大众 (属性:品牌,价格),在测试类中根据客户要求购买的汽车品牌, 通过接口car为客户提供相应的汽车对象. Description:通过java反射机制和Properties类的结合使用,实现工厂模式.代码如下: 1.首先是entity包中的一个接口和三个实体类 汽车接口: 1 /* 2 *Description:定义汽车接口 3 * */ 4 5 6…
摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDBC中的应用 原创文章.同步自作者个人博客http://www.jasongj.com/design_pattern/simple_factory 简单工厂模式使用案例 有一种抽象产品--汽车(Car),同时有多种具体的子类产品,如BenzCar,BMWCar,LandRoverCar.类图如下 作为…
抽象工厂模式(Abstract Factory Pattern)是工厂方法模式的进一步抽象,其英文原话"Provide an interface for creating families of related or dependent objects without specifying their concrete classes",翻译,"为创建一组相关或相互依赖的对象提供一个借口,无需指定它们的详细类".抽象工厂模式一般是用于创一族产品,而且这族产品分不同的…