① 什么是工厂模式有没有用工厂模式解决实际问题
工厂模式的思想主要为:多个类似的子类继承同一个父类,对其父类中的变量进行操作;工厂类负责判断、控制哪个子类被执行,而工厂类调用子类完成后,返回的结果是该子类的父类,该父类中的变量已经被操作过了,访问该父类,得到我们想要的结果
例如:
public interface Fruit {
void grow();//生长
void harvest();//收获
void plant();//种植
}
public class Apple implements Fruit{
private int treeAge;
public void grow() {
System.out.println("Apple is growing");
}
public void harvest() {
System.out.println("Apple has been harvested");
}
public void plant() {
System.out.println("Apple has been planted");
}
public int getTreeAge()
{
return treeAge;
}
public void setTreeAge(int age)
{
this.treeAge=age;
}
}
public class Grape implements Fruit {
private boolean seedless;
public void grow() {
System.out.println("Apple is growing");
}
public void harvest() {
System.out.println("Apple has been harvested");
}
public void plant() {
System.out.println("Apple has been planted");
}
public boolean getSeedless()
{
return seedless;
}
public void setSeedless(boolean seed)
{
this.seedless=seed;
}
}
public class FruitGardener {
public static Fruit factory(String which) throws BadFruitException
{
if(which.equalsIgnoreCase("apple"))
{
return new Apple();
}
else if(which.equalsIgnoreCase("grape"))
{
return new Grape();
}
else
{
throw new BadFruitException("Bad Fruit request");
}
}
}
public class BadFruitException extends Exception{
public BadFruitException(String msg)
{
super(msg);
}
}
public static void main(String[] args)
{
try
{
FruitGardener.factory("apple");
FruitGardener.factory("grape");
}
catch(BadFruitException e)
{
System.out.println(e);
}
}
}
② 工厂模式是什么
工厂模式具体包括了简单工厂、工厂方法、抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型,其中简单工厂并不属于GOF的23中模式。但是它是理解其它的工厂模式的一个很好的基础,所以很多人在讲述设计模式的时候会提到简单工厂模式。创建型模式关注的是对象的创建,创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑。
③ 谁能通俗说一下什么是工厂模式吗
假设有一个工厂是生产玩具的,你现在需要玩具,你就跟工厂说给我生产一个小熊,然后工厂就给了你一个小熊玩具,如果你说给我生产一个大象,工厂就给了你一个大象玩具,用代码来表示
class Factory{
public Toy getToys(String type){
if("xiaoxiong"){
return new XiaoXiong();
}else if("daxiang"){
return new Daxiang();
}
}
}
calss Toy{
}
class XiaoXiong extends Toy{
}
class Daxiang extends Toy{
}
void main(){
//先获取到工厂实例,也就是你现在有一个工厂了
Factory f = new Factory();
//让工厂生产一个小熊对象
XIaoXIong xiaoxiong = f.getToys("xiaoxiong");
}
这就是简单工厂模式,把你想要生产的实例对象告诉工厂,然后工厂给你返回一个实例对象
如果想知道更多看下面的
blog.csdn.net/lovelion/article/details/9300337
④ 大家知道工厂模式是什么吗
由于不同的显示器厂商对一些功能的定义也略有不同,比如一些不常用的失真,线性失真,会聚,色纯,加速极电压等等项目,当显示器有一些软件故障的时候,可以借助它在不维修电路的基础上来解决问题。这里所说的软件故障,指的是像亮度,色彩,色纯,会聚,失真,线型失真,位置尺寸等,如果用户的显示器不亮了,或者是抖动,或者是由电路元件引起的故障,那是工厂模式解决不了的对工厂模式的不适当操作会有什么后果?由于不同厂商的工厂模式内置的功能不同。有的显示器工厂模式只是比普通功能多出一点而已,如果调节不当只是影响显示效果。但有一部分厂商的工厂模式功能相当丰富,不慎的误操作则有可能对显示器产生很大的影响,比如影响到显示器的部分功能甚至导致显示器无法正常工作。
所以我们劝大家在使用工厂模式时要慎重,在不清楚某个功能之前,最好不要乱调,由此而造成的后果我们不负任何责任。由于不同的显示器厂商对一些功能的定义也略有不同,比如一些不常用的失真,线性失真,会聚,色纯,加速极电压等等项目,当显示器有一些软件故障的时候,可以借助它在不维修电路的基础上来解决问题。这里所说的软件故障,指的是像亮度,色彩,色纯,会聚,失真,线型失真,位置尺寸等,如果用户的显示器不亮了,或者是抖动,或者是由电路元件引起的故障,那是工厂模式解决不了的。
⑤ 谁能帮简单介绍一下工厂模式呢
你好,很高兴能解答你的问题。
首先工厂模式是软件开发中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
工厂模式主要的意图是:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
案列1:您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。 2、Hibernate 换数据库只需换方言和驱动就可以。
优点:1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
案例2:日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。 2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。 3、设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。
注意事项:作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。
希望能帮到你,谢谢!
⑥ 什么是工厂模式
1. OSD(On Screen Display)是显示器产品中通用的实现人机界面的一个屏幕窗口设计。
2. 用户模式: 显示器的使用者通过开放权限的OSD界面实现对显示器的功能控制或信息获取。
3. 工厂模式: 为了方便显示器的产线生产,特别为生产线设计的OSD界面来对显示器进行一些重要敏感的参数调整,调整过的值不希望被用户更改,这种操作环境工厂通常是以组合键(Hot Key)方式进入方式才能进入,普通用户不知道诀窍不容易进入这种操作环境。
⑦ 手机工厂模式是什么
工厂模式即工程模式。
所谓工程模式,其实是指利用手机检测基站各种指标参数所处的一种工作模式。各家移动电话制造公司均有专门的开启工程模式的产品出售,它具备了普通用户使用的移动电话所有功能,同时可用做检测移动电话所处位置的包括场强、距离基站距离、手机所占频道号码以及目前所使用的临时号码等等信息,因此价格往往高出普通移动电话许多。但是只要将我们普通移动电话做些电路和程序上的改动,就可以使其开启工程模式从而身价大增。还是让我们来看看手机的工程模式具体能做些什么吧。
二.工程模式用来干什么?
1. 分析接收信号状况
我们经常遇到同一品牌不同型号的两部手机或是不同品牌的两部手机在同一地点,信号强度显示不一样。有的用户觉得格数并不重要,只要能正常拨打和接收就行。不错,单凭信号的格数来判断手机的收发质量是不准确的,但如果打开手机工程模式,接收信号的状况就从格数显示为数值了,收信强弱无所遁形。目前摩托罗拉、诺基亚、爱立信都能比较简单地开启工程模式。
2. 可知基站编号
除上述反映收信状况时会用到基站ID外,如基站不小心“挂掉”时,可以通知网络运营商派人处理。
3. 可知基站距离
开启手机工程模式的用户如果看到附近的基站都离自己经常活动的范围很远,信号不强,通话质量欠佳,就可以反映到客户服务部门去,帮助他们改善网络状况。
4. 免除网络塞车之苦
移动电话一般都是选择最近、最强的基站注册,并停留在此频道。能开启工程模式的、且有锁频功能的手机,当你塞机时,可以用锁频功能强行手机向别的基站注册,并使用,可免去频道“塞车”之苦。
可见,用户对掌握手机“动态”,获得相当多的资讯以及对网络运营商的监督大有帮助,尤其是中国的GSM网络运营商在“独此两家,别无分店”的市场环境下。开启工种模式不光是玩喔!
应该注意的几点
1.开启手机工程模式不能增强手机收信能力,只能阅读。
2.工程模式要改机,改机不等于开启工程模式。
3.没有把握请勿开启工程模式。
4.开启工程模式后,会导致保修失效。
⑧ java中的工厂模式是什么意思
工厂模式简单的讲就是用工厂方法代替了new的操作,
在通俗点就是说,你new一个对象的时候直接调用工厂方法就行了,
在编程时,需要定义一个工厂接口,由不同的的子类去实现,再定一个具体工厂类,定义一个产生实例的方法,我们通过这个方法来获得实例就行了,
⑨ 工厂模式是什么
只有手机才具有工厂模式,工厂模式就是说手机刚出场的时候,什么都没有安装的初始状态模式
⑩ 编程中所说的 工厂模式 是什么意思
您好,
工厂模式基本上是最常用的设计模式之一,设计模式通俗的来说就是“做某件事的通用的方法”,这些方法都是被广泛使用、经过长时间“考验”的,对于解决某个特定的问题有非常好的效果。
设计模式基本上到了“软件设计”的层面,它与具体的程序设计语言无关,也没有实现,只是包含了一个大致的架构,它是一种思想。
如果您想学习设计模式,我推荐两本书:《设计模式:可复用面向对象软件的基础》和《设计模式精解》,书很枯燥,但绝对是程序员必读教材。
工厂模式我大致解释一下,比如写一个word那样的程序,它可以打开doc、rtf、txt等好几种文件格式,而对于这些文件的处理方法是不同的,比如txt就不能保存文字颜色字体之类的信息,那么我可能这样设计:
word主程序,一个类Application,它有一个虚方法(或抽象方法,不过C#中抽象方法只能在抽象类里)叫OpenFile,用来打开指定的文件,然后返回一个Doucument类的实例,这个类可以直接把它的内容显示在屏幕上,word处理的主体是这个类。这个Application类还有很多方法比如关闭打印之类的。
然后从Application类派生出一个子类TxtApplication,父类中OpenFile是虚方法,没有实现,在子类中重写这个方法,打开Txt文档,读取txt文件,然后返回一个Document类。
然后再从Application里派生一个子类RichTxtApplication,也重写OpenFile,它打开rtf文档,从里面读取相应的文档和文档的格式信息,然后也返回一个Document类。
最后,根据一定的策略(比如用户要打开的文件的扩展名是“txt”,就实例化一个txtApplication,然后调用它的OpenFile方法获得Document;如果扩展名是“rtf”,就实例化一个rtfApplication,调用它的OpenFile方法获得Document)。
这样,Application类中的OpenFile方法就叫做工厂方法,这种“一个类希望由它的子类指定它所创建的对象”的方法就是工厂模式。
这样说可能太抽象了,设计模式不是很容易就能说清楚的,建议您看看那两本书。