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

DogYun(300元/月),韩国独立服务器,E5/SSD+NVMe

DogYun(中文名称狗云)新上了一批韩国自动化上架独立服务器,使用月减200元优惠码后仅需每月300元,双E5 CPU,SSD+NVMe高性能硬盘,支持安装Linux或者Windows操作系统,下单自动化上架。这是一家成立于2019年的国人主机商,提供VPS和独立服务器租用等产品,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等。下面分享这款自动化上架韩国独立服务器的配置和优惠码信息。...

青云互联19元/月,美国洛杉矶CN2GIA/香港安畅CN2云服务器低至;日本云主机

青云互联怎么样?青云互联美国洛杉矶cn2GIA云服务器低至19元/月起;香港安畅cn2云服务器低至19元/月起;日本cn2云主机低至35元/月起!青云互联是一家成立于2020年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务。青云互联本站之前已经更新过很多相关文章介绍了,青云互联的机房有香港和洛杉矶,都有CN2 GIA线路、洛杉矶带高防,商家承诺试用7天,打死全额退款点击进入:青云互联...

香港 E5-2650 16G 10M 900元首月 美国 E5-2660 V2 16G 100M 688元/月 华纳云

华纳云双11钜惠出海:CN2海外物理服务器终身价688元/月,香港/美国机房,免费送20G DDos防御,50M CN2或100M国际带宽可选,(文内附带测评)华纳云作为一家专业的全球数据中心基础服务提供商,总部在香港,拥有香港政府颁发的商业登记证明,APNIC 和 ARIN 会员单位。主营香港服务器、美国服务器、香港/美国OpenStack云服务器、香港高防物理服务器、美国高防服务器、香港高防I...

java工厂模式为你推荐
硬件设计方案我有一个好的设计方案,智能硬件,怎么把方案卖出去。。资源优化配置社会资源优化配置的标志是什么?怎样实现?全球随机视频网全球随机视频网的发展方向监控员工单位要装摄像头监控员工犯法吗burndown如何画burndown chartsd卡座SD卡座 FPC座子请问这些产品哪家厂家的货比较好啊?趋势防毒如何破解趋势防病毒墙分销渠道案例海尔公司的分销渠道是?详单查询手机短信详单怎么查询key网有没有可以免费看电影的网址 要真免费的喔~
3322动态域名 免费ftp空间 京东云擎 淘宝双十一2018 商务主机 isp服务商 中国电信测速网 789电视剧 优酷黄金会员账号共享 新睿云 环聊 智能dns解析 美国盐湖城 iki 华为k3 免费个人主页 免费蓝钻 空间服务器 空间申请 测试网速命令 更多