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); } }

Hostodo(年付12美元),美西斯波坎机房Linux VPS主机66折

Hostodo 商家是比较小众的国外VPS主机商,这不看到商家有推送促销优惠在美国西岸的斯波坎机房还有少部分库存准备通过低价格促销,年付低至12美元Linux VPS主机,且如果是1GB内存方案的可以享受六六折优惠,均是采用KVM架构,且可以支付宝付款。第一、商家优惠码优惠码:spokanessd 1GB+内存方案才可以用到优惠码,其他都是固定的优惠低至年12美元。第二、商家促销这里,我们可以看到...

Megalayer 香港CN2优化线路VPS主机速度和性能综合评测

对于Megalayer云服务器提供商在之前也有对于他们家的美国服务器和香港服务器进行过评测和介绍,但是对于大部分网友来说需要独立服务器和站群服务器并不是特别的普及,我们很多网友使用较多的还是云服务器或者VPS主机比较多。在前面也有在"Megalayer新增香港VPS主机 1GB内存 50GB SSD 2M带宽 月59元"文章中有介绍到Megalayer商家有新增香港CN2优化VPS主机。那时候看这...

腾讯云CVM云服务器大硬盘方案400GB和800GB数据盘方案

最近看到群里的不少网友在搭建大数据内容网站,内容量有百万篇幅,包括图片可能有超过50GB,如果一台服务器有需要多个站点的话,那肯定默认的服务器50GB存储空间是不够用的。如果单独在购买数据盘会成本提高不少。这里我们看到腾讯云促销活动中有2款带大数据盘的套餐还是比较实惠的,一台是400GB数据盘,一台是800GB数据盘,适合他们的大数据网站。 直达链接 - 腾讯云 大数据盘套餐服务器这里我们看到当前...

java工厂模式为你推荐
重装系统后数据恢复重装系统后文件丢失如何恢复求答案文件损坏电脑总的提示文件损坏怎么办什么是cookie覆盖自动cookie处理是什么意思阿里下载最新阿里旺旺怎么下载招行信用卡还款我是招行的信用卡!该怎么还款快照优化百度快照和优化是一回事么售后软件有没有什么软件可以接单手机维修乐辞乐的组词有什么网络购物的发展网购未来的发展趋势如何?购物网站设计Jsp+Sql电子商城&网上购物网站设计
虚拟主机99idc 深圳域名注册 域名查询软件 naning9韩国官网 idc评测 漂亮qq空间 bluehost wavecom rackspace iisphpmysql lamp配置 一点优惠网 英文站群 稳定免费空间 百度云1t 微软服务器操作系统 web应用服务器 qq金券 114dns 中国联通宽带测速 更多