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

WebHorizon($10.56/年)256MB/5G SSD/200GB/日本VPS

WebHorizon是一家去年成立的国外VPS主机商,印度注册,提供虚拟主机和VPS产品,其中VPS包括OpenVZ和KVM架构,有独立IP也有共享IP,数据中心包括美国、波兰、日本、新加坡等(共享IP主机可选机房更多)。目前商家对日本VPS提供一个8折优惠码,优惠后最低款OpenVZ套餐年付10.56美元起。OpenVZCPU:1core内存:256MB硬盘:5G NVMe流量:200GB/1G...

Boomer.Host(年付3.5美)休斯敦便宜VPS

Boomer.Host是一家比较新的国外主机商,虽然LEB自述 we’re now more than 2 year old,商家提供虚拟主机和VPS,其中VPS主机基于OpenVZ架构,数据中心为美国得克萨斯州休斯敦。目前,商家在LET发了两款特别促销套餐,年付最低3.5美元起,特别提醒:低价低配,且必须年付,请务必自行斟酌确定需求再入手。下面列出几款促销套餐的配置信息。CPU:1core内存:...

Hostodo(年付$34.99), 8TB月流量 3个机房可选

Hostodo 算是比较小众的海外主机商,这次九月份开学季有提供促销活动。不过如果我们有熟悉的朋友应该知道,这个服务商家也是比较时间久的,而且商家推进活动比较稳,每个月都有部分活动。目前有提供机房可选斯波坎、拉斯维加斯和迈阿密。从机房的地理位置和实际的速度,中文业务速度应该不是优化直连的,但是有需要海外业务的话一般有人选择。以前一直也持有他们家的年付12美元的机器,后来用不到就取消未续约。第一、开...

java工厂模式为你推荐
eofexceptionjava中dis.readutf报错java.io.EOFException起英文名好听的英文名字体系文件怎么建立公司体系文件?体系文件包括哪些内容?怎么入手?什么是cookie有时遇到网页提示禁止第三方cookie是什么意思?支付宝账单查询支付宝账单怎么查google地图api如何使用GOOGLE EARTH 的API开发自己的应用程序jsp源码实现登陆功能的JSP代码怎么编写?招行信用卡还款招行信用卡怎么还款摇一摇周边什么是微信摇一摇周边?电商网站设计电子商务网站设计应注意哪些问题
in域名注册 域名服务器上存放着internet主机的 中国万网虚拟主机 便宜服务器 jsp主机 免费主机 unsplash 鲜果阅读 java虚拟主机 idc资讯 股票老左 免费防火墙 免费智能解析 免费网页申请 免费私人服务器 免费邮件服务器 便宜空间 上海电信测速 中国电信网络测速 数据库空间 更多