java工厂模式用java 编写程序写出简单的工厂模式?

java工厂模式  时间:2021-09-04  阅读:()

Java中常用的设计模式有哪些?请详细说明一下工厂模式。

一共23种设计模式! 引用《软件秘笈-设计模式那点事》书籍: 按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。

创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。

创建型模式用来处理对象的创建过程,主要包含以下5种设计模式: ? 工厂方法模式(Factory Method Pattern) ? 抽象工厂模式(Abstract Factory Pattern) ? 建造者模式(Builder Pattern) ? 原型模式(Prototype Pattern) ? 单例模式(Singleton Pattern) 结构型模式用来处理类或者对象的组合,主要包含以下7种设计模式: ? 适配器模式(Adapter Pattern) ? 桥接模式(Bridge Pattern) ? 组合模式(Composite Pattern) ? 装饰者模式(Decorator Pattern) ? 外观模式(Facade Pattern) ? 享元模式(Flyweight Pattern) ? 代理模式(Proxy Pattern) 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式: ? 责任链模式(Chain of Responsibility Pattern) ? 命令模式(Command Pattern) ? 解释器模式(Interpreter Pattern) ? 迭代器模式(Iterator Pattern) ? 中介者模式(Mediator Pattern) ? 备忘录模式(Memento Pattern) ? 观察者模式(Observer Pattern) ? 状态模式(State Pattern) ? 策略模式(Strategy Pattern) ? 模板方法模式(Template Method Pattern) ? 访问者模式(Visitor Pattern) 抽象工厂模式(Abstract Factory Pattern)提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类。

抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。

这样一来,客户就从具体产品中解耦。

详情请参考书籍《软件秘笈:设计模式那点事》,里面讲解的23中设计模式例子很生动,容易理解,还有JDK中设计模式应用情况,看了收获挺大的!好东西大家一起分享! 祝你早日学会设计模式!

java工厂模式例子

产品 public interface Work { void doWork(); } ConcreteProduct public class StudentWork implements Work { public void doWork() { System.out.println("学生做作业!"); } } public class TeacherWork implements Work { public void doWork() { System.out.println("老师审批作业!"); } } 生产者 public interface IWorkFactory { Work getWork(); } ConcreteCreator public class StudentWorkFactory implements IWorkFactory { public Work getWork() { return new StudentWork(); } } public class TeacherWorkFactory implements IWorkFactory { public Work getWork() { return new TeacherWork(); } } Test public class Test { public static void main(String[] args) { IWorkFactory studentWorkFactory = new StudentWorkFactory(); studentWorkFactory.getWork().doWork(); IWorkFactory teacherWorkFactory = new TeacherWorkFactory(); teacherWorkFactory.getWork().doWork(); } }

java 设计模式(工厂方法)

面向抽象(抽象类或接口)编程。

IWorkFactory studentWorkFactory = new StudentWorkFactory(); 注意:类型是接口类型,即抽象工厂,抽象工厂生产的是抽象产品,而new的则是具体工厂,是由子类实现的,具体工厂生产具体产品。

面向抽象的好处:1.在设计抽象的时候不用管具体的实现,只要定义接口知道它用来干什么就行,这样,我只需要知道抽象接口就能继续下面的开发设计工作了,而不用事先设计具体的实现内容;2. 可以扩展多个子类实现抽象接口,更利于系统后期的扩展,而对原系统不造成任何影响,即:开-闭原则。

TeacherWork tt = new TeacherWork(); 不用说就是面向具体实现类编程,缺点就是扩展性不好,对系统后期维护扩展影响较大。

举个简单的例子: 假如在系统的A.java中代码中使用了TeacherWork 类型对象,是满足了目前软件的需求,但是,如果有一天需求变化了需要一个StudentWork 类型对象,该怎么办?只能修改A.java类来满足这样的修改需求。

这样就影响了原来系统结构稳定性,需要重新调试和测试,而这带来的维护成本是非常大的,有时可能还会带来系统错误,而影响系统运行。

如果在A.java类中应用Work接口类型就不会存在这种问题,A.java不需要任何修改,只需要修改注入到A中的Work接口的具体实现类即可。

面向抽象编程的好处就在于对系统维护和扩展上,即在不影响原系统稳定运行的基础上增加新的扩展行为,即要符合“开-闭”原则。

可能会因此而失去一定的效率问题,但是对于后期的维护成本来说,这个可以忽略不计。

推荐你一本好书:《软件秘笈-设计模式那点事》其中讲解的设计模式很到位,还有每个模式的静态类图和JDK中设计模式的具体分析讲解,读了收获一定很大。

祝你成功!

java工厂模式例子

public class Factory{   public static Sample creator(int which){   //getClass 产生Sample 一般可使用动态类装载装入类。

  if (which==1)   return new SampleA();   else if (which==2)   return new SampleB();   }   }

用简单易懂的方式解释下JAVA中的工厂模式

一个工厂生产不同的产品,

简单工厂模式: 根据所提供的数据返回某个父类的一个 实例: 一个简单工厂 登记表单,允许按照不同格式 名 姓 姓, 名 //我们希望通过名和姓之间有,来区分顺序 先写个基类; 再定义二个子类; 一个处理名字无,子类 一个处理名字有,子类 一个创建对象的类; <判断是否有,调用不同子类对象>

用java 编写程序写出简单的工厂模式?

java中工厂模式分为: 1. 简单工厂模式(Simple Factory)? 2. 工厂方法模式(Factory Method)? 3. 抽象工厂模式(Abstract Factory)? 每种方法的实现不同 提供一个简单工厂模式的案例: public abstract class Woman { private String mySkill; public String getMySkill() { return mySkill; } public Woman() { //System.out.println("我是女人"); } public void setMySkill(String mySkill) { this.mySkill = mySkill; } } ---------------------------- public class LovelinessWoman extends Woman{ /* * 可爱型女人 */ ? ? public LovelinessWoman() ? ? { ? ? String mySkill="撒过娇、出过轨、勾引领导下过水"; ? ? ? ? this.setMySkill(mySkill);? ? ? } } ----------------------------- public class SteelinessWoman extends Woman{ /* * 冷酷型女人 */ ? ? public SteelinessWoman() ? ? { ? ? String mySkill="装过神、弄过鬼,跟别人老公亲过嘴"; ? ? ? ? this.setMySkill(mySkill);? ? ? } } -------------------------------------- public class WomanMakeFactory { public Woman findWoman(int typeID) { switch (typeID) { case 1: return new LovelinessWoman(); case 2: return new VirtuousWoman(); case 3: return new SteelinessWoman(); default: return null; } } public Woman findWoman(String type) throws ClassNotFoundException, InstantiationException, essException { /* * Type t = Type.GetType("SimpleFactory." + type);? * Woman wm = * (Woman)Activator.CreateInstance(t); return wm; */ String string=.jbit.design.simplefactory."+type; Class c = Class.forName(string); Woman wm = (Woman) c.newInstance(); return wm; } } ------------------------- 调用 public class Test2 { /** * @param args * @throws essException? * @throws InstantiationException? * @throws ClassNotFoundException? */ public static void main(String[] args) throws ClassNotFoundException, InstantiationException, essException { Scanner input=new Scanner(System.in); boolean sel=false; do { System.out.println("请选择你要找的女人的类型"); System.out.println("LovelinessWoman:可爱型女人 VirtuousWoman:善良型女人 SteelinessWoman:冷酷型女人"); String typeid=input.next(); ? ? ? ?WomanMakeFactory factory = new WomanMakeFactory(); ? ? ? ?Woman wm=factory.findWoman(typeid); ? ? ? ?System.out.println("该类型女人的新标准:"); ? ? ? ?System.out.println(wm.getMySkill()); ? ? ? ? ? ? ? ?System.out.println("还想看看别的类型吗?y代表想,n代表再也不想了"); ? ? ? ? ? ? ? ?sel=input.next().equals("y"); } while (sel); } }

HostKvm - 夏季云服务器七折优惠 香港和韩国机房月付5.95美元起

HostKvm,我们很多人都算是比较熟悉的国人服务商,旗下也有多个品牌,差异化多占位策略营销的,商家是一个创建于2013年的品牌,有提供中国香港、美国、日本、新加坡区域虚拟化服务器业务,所有业务均对中国大陆地区线路优化,已经如果做海外线路的话,竞争力不够。今天有看到HostKvm夏季优惠发布,主要针对香港国际和韩国VPS提供7折优惠,折后最低月付5.95美元,其他机房VPS依然是全场8折。第一、夏...

酷番云78元台湾精品CN2 2核 1G 60G SSD硬盘

酷番云怎么样?酷番云就不讲太多了,介绍过很多次,老牌商家完事,最近有不少小伙伴,一直问我台湾VPS,比较难找好的商家,台湾VPS本来就比较少,也介绍了不少商家,线路都不是很好,有些需求支持Windows是比较少的,这里我们就给大家测评下 酷番云的台湾VPS,支持多个版本Linux和Windows操作系统,提供了CN2线路,并且还是原生IP,更惊喜的是提供的是无限流量。有需求的可以试试。可以看到回程...

零途云月付31.9元起,香港cn2 gia线路

零途云是一家香港公司,主要产品香港cn2 gia线路、美国Cera线路云主机,美国CERA高防服务器,日本CN2直连服务器;同时提供香港多ip站群云服务器。即日起,购买香港/美国/日本云服务器享受9折优惠,新用户有优惠码:LINGTUYUN,使用即可打折。目前,零途云还推出性价比非常高香港多ip站群云服务器,有需要的,可以关注一下。零途云优惠码:优惠码:LINGTUYUN (新用户优惠,享受9折优...

java工厂模式为你推荐
阿里校园招聘阿里巴巴校园招聘内推有什么优势连接池什么是数据库连接池?谢谢了支付宝账单查询支付宝电子账单怎么查询木马杀毒木马杀毒到底有什么用?能彻底杀的了吗?售后软件vivo售后的软件可以删吗工作经验介绍个人简历中的服务员工作经验怎么写比较好网络购物的发展网购未来的发展趋势如何?趋势防毒趋势杀毒好用吗?怎样上传照片如何上传照片安全工程师待遇安全工程就业的待遇怎么样,
汉邦高科域名申请 securitycenter 便宜服务器 pccw 免费网站监控 ubuntu更新源 论坛空间 150邮箱 什么是刀片服务器 百兆独享 宁波服务器 刀片服务器是什么 129邮箱 免费申请个人网站 太原网通测速平台 metalink 多线空间 独享主机 上海电信测速 西安主机 更多