首页 > 其他 > 详细

设计模式——工厂模式

时间:2019-03-22 20:25:34      阅读:179      评论:0      收藏:0      [点我收藏+]

参考博客:https://www.cnblogs.com/malihe/p/6891920.html

 

一、静态工厂模式:

实现了统一接口的不同类,通过一个工厂类实现的不同静态方法获取实例

常用的工厂模式是静态工厂,利用static方法,作为一种类似于常见的工具类Utils等辅助效果,一般情况下工厂类不需要实例化。

//学生静态工厂

//统一接口 interface student{ String study();}
//不同类实现统一接口
class BeijingStudent implements student{ @Override public String study() { return "well"; } } class TianjingStudent implements student{ @Override public String study() { return "great"; } } class NanjingStudent implements student{ @Override public String study() { return "good"; } }
//工厂类
public class StudentFactory { private StudentFactory(){}
//静态工厂方法产生实例
public static student getBStuendt(){ return new BeijingStudent(); } public static student getTStudent(){ return new TianjingStudent(); } public static student getNStudent(){ return new NanjingStudent(); } } class StudentClient{ public student get(String name){ if(name.equals("B")) return StudentFactory.getBStuendt(); else if(name.equals("T")) return StudentFactory.getTStudent(); else return StudentFactory.getNStudent(); } }

 

 

二、抽象工厂模式:

实现了统一接口的不同类,通过实现了统一工厂接口的不同工厂类产生实例

优点是:耦合性低,静态工厂在不修改工厂代码的情况下,无法实现新的实例

               而抽象工厂则可以灵活地添加新的工厂类来实现新的实例

interface Person{}

class PersonA implements Person{}
class PersonB implements Person{}

//抽象工厂接口
interface PersonFactory{ Person get();} class FactoryForPersonA implements PersonFactory{ @Override public Person get() { return new PersonA(); } } class FactoryForPersonB implements PersonFactory{ @Override public Person get() { return new PersonB(); } } public class PFactory { Person A = new FactoryForPersonA().get(); Person B = new FactoryForPersonB().get(); }

 

设计模式——工厂模式

原文:https://www.cnblogs.com/wqq-blog/p/10580731.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!