Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
新手学习工厂模式心得,请高手指教
09-10-14
theskyofsky
工厂模式:在
面向对象
思想中,我们需要将创建 对象 的工作与使用 对象 的工作分开, 也就是说,让创建 对象 所需要的大量初始化工作从构造函数中分离出去。
这时我们就需要Factory工厂模式来生成 对象 了,不能再用上面简单new 类(参数)。也可以理解说,在创建 对象 的时候,一般要使用工厂模式。
举例:在××××中,学校是一个类,它包含子类:大学,中学,小学,幼儿园。
在创建类的时候可以使用共创模式:
一个接口 School ,接口中定义 School的属性。
另外还应该有 SchoolManage 类定义 School 的动作(方法); 这也是最可能复用的 类。
SchoolService 类 定义School 有关的业务;
工厂类:
public class SchoolFactory {
public static School create(String schoolClassName) {
//动态配置常量,也可以使用配置文件
InitialContext ic = new InitialContext();
//动态装入schoolClassName
//例如 schoolClassName = COLLEGE;
String className =(String) ic.lookup(JNDINames.schoolClassName);
Class c = Class.forName(className);
return (School)c.instance();
}
}
推广:当大学,中学,小学,幼儿园还有子类时:
例如:中学有重点中学,一般中学
这样可以使用抽象工厂类
public abstract class SchoolFactory
public class MiddleSchoolFactory extends SchoolFactory
在 工厂 MiddleSchoolFactory 中生产 对象 GeneralMiddleSchool 和 KeyMiddelSchool
School 类为接口类
MiddleSchool 为抽象类
GeneralMiddleSchool 和 KeyMiddelSchool extends MiddelSchool implment School
结合缓存,在设计 对象类 的时候应该将对象经常改变的属性分离出来,形成一个单独的对象状态类。
在对象中可以设置一个状态位来检查该属性是否变化。(或者用一个聚合类来装配 对象和对象的状态)
生成 对象 后将 对象和对象状态 (或聚合类) 保存在缓存中,下次需要使用对象的时候,可以先检查该状态有无变化,有变化则重新转载状态类,无责直接用。
实例:(下次思考)
推广:使用 缓存使 业务 和 持久
异步
。(下次思考)
思考:使用缓存 业务和持久异步产生的 同步 问题,在大量数据的情况下 缓存性能问题。(下次思考)
fxltsbl3855
2009-10-15 14:30
就factory pattern技术本身其实没啥,就一个接口实现和抽象类继承
最重要的还是
把握业务对象的共同点和不同点,以及将来有可能出现的变化
然后才能设计出健壮的
架构