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

老薛主机入门建站月付34/月,年付345元,半价香港VPS主机

老薛主机怎么样?老薛主机这个商家有存在有一些年头。如果没有记错的话,早年老薛主机是做虚拟主机业务的,还算不错在异常激烈的市场中生存到现在,应该算是在众多商家中早期积累到一定的用户群的,主打小众个人网站业务所以能持续到现在。这不,站长看到商家有在进行夏季促销,比如我们很多网友可能有需要的香港vps主机季度及以上可以半价优惠,如果有在选择不同主机商的香港机房的可以看看老薛主机商家的香港vps。点击进入...

阿里云香港 16核32G 20M 999元/月

阿里云香港配置图提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 阿里云香港 16核32G 20M 这款产品,单单说价格上就是十分的离谱原价8631元/月的现价只要 999元 而且还有个8折循环优惠。废话不多说直接进入正题。优惠时间 2021年8月20日-2021年9月20日 优惠码 wn789 8折优惠阿里云香港BGP专线 16核32G 10M带宽 优惠购买 399元购买链接阿里云...

HostKvm新上联通CUVIP线路VPS,八折优惠后1G内存套餐$5.2/月起

最近上洛杉矶机房联通CUVIP线路主机的商家越来越多了,HostKvm也发来了新节点上线的邮件,适用全场8折优惠码,基于KVM架构,优惠后最低月付5.2美元起。HostKvm是一家成立于2013年的国人主机商,提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,君选择国内直连或优化线路,延迟较低,适合建站或者远程办公等。以洛杉矶CUVIP线路主机为例,...

java工厂模式为你推荐
java队列java中如何实现按队列执行任务模糊数学模糊数学是什么?能举个例子吗?谢谢swift语言Swift 集成了哪些语言的特性体系文件什么叫采购体系文件文件损坏文件损坏是由哪些原因造成的?有什么办法修复吗?教育城域网关于学校局域网文件下载招行信用卡还款招行信用卡还款顺序是怎样的t320华为T320怎么样摇一摇周边什么是微信摇一摇周边?暂停线程Java里如何暂停一个线程,达到一定条件后又唤醒线程?
刀片服务器的优势 四核服务器 shuang12 下载速度测试 湖南idc 中国电信测速网站 photobucket 数据湾 免费网站加速 pptpvpn tko 网络安装 电脑显示屏不亮但是主机已开机 远程主机强迫关闭了一个现有的连接 电脑主机声音大 kosskeb4 竞彩论坛空间 腾讯空间登录首页 宿迁服务器托管 ftp服务器是什么 更多