当前位置: 首页 > news >正文

厦门营销型网站建设公司广东网络公司网站

厦门营销型网站建设公司,广东网络公司网站,株洲seo主管,紫金建设公司官网在平常的学习和工作中#xff0c;我们创建对象一般会直接用new#xff0c;但是很多时候直接new会存在一些问题#xff0c;而且直接new会让我们的代码变得非常繁杂#xff0c;这时候就会巧妙的用到设计模式#xff0c;平常我们通过力扣学习的算法可能并不会在我们工作中用到…在平常的学习和工作中我们创建对象一般会直接用new但是很多时候直接new会存在一些问题而且直接new会让我们的代码变得非常繁杂这时候就会巧妙的用到设计模式平常我们通过力扣学习的算法可能并不会在我们工作中用到但设计模式基本上我们所参加的每一个项目都会有。 今天来学习讲解一下工厂模式这个也是我认为最常见的设计模式之一 1.什么是工厂模式 工厂模式将目的将创建对象的具体过程屏蔽隔离起来从而达到更高的灵活性工厂模式可以分为三类 简单工厂模式Simple Factory 工厂方法模式Factory Method 抽象工厂模式Abstract Factory 这三种模式从上到下逐步抽象并且更具一般性。《设计模式》一书中将工厂模式分为两类工厂方法模式与抽象工厂模式。将简单工厂模式看为工厂方法模式的一种特例两者归为一类。 我们先从学校食堂窗口案例对工厂模式做个初步的了解 没有工厂模式在没有工厂模式的情况下我们食堂窗口就类似于米饭馒头面条这些都需要我们自己创建我们需要告诉窗口具体需要什么产品然后自己创建简单工厂模式在简单工厂模式下我们就不需要自己创建了而是让食堂阿姨创建但是简单工厂模式下只有一个工厂也就是只有一个窗口我们需要在这一个窗口选取我们所需要的食物工厂方法模式在工厂方法模式下每一个食物就对应一个窗口比如说分为米饭窗口馒头窗口面条窗口我们需要什么仅需要去对应窗口买就可以了抽象工厂模式在抽象工厂模式下每一个事物可能有多种组成成分每一个窗口可以生成多个食品以及食品组成成分比如说有一个清真窗口我们需要刀削面加牛肉或者刀削面加羊肉就仅需在这一个清真窗口把我们所需的参数传进去就会我们生成对应的对象。 2.简单工厂模式 简单工厂模式的逻辑就是将定义一个创建对象的接口将接口的创建和业务逻辑分开我们需要修改逻辑仅需要去修改工厂里面的内容即可降低耦合性。 上面就是简单工厂的uml图简单工厂由于比较好理解一般来说仅有一个角色就是产品工厂我们将需要的参数提交给简单工厂简单工厂就会将产品生产出来。 代码实现 产品类 abstract class food {public food(){} }public class noodles extends food {public noodles () {System.out.println(制造--noodles );} } public class rice extends BMW{public rice (){System.out.println(制造--rice );} }工厂类 public class Factory {public food createfood(int type) {switch (type) {case 1:return new rice();case 2:return new noodles();default:break;}return null;} }用户类 public class Users{Factory factory new Factory();food rice factory.createfood(1);food noodles factory.createfood(2); }上述之所以用12仅仅是为了方便写代码。 简单工厂模式的优缺点都很明显有点就是解耦缺点就是我们每次增加或者修改产品都需要去修改工厂类如果项目规模特别大的话这显然是无法接受的。 3 工厂方法模式 工厂方法模式将工厂抽象化并定义一个创建对象的接口。每增加新产品只需增加该产品以及对应的具体实现工厂类由具体工厂类决定要实例化的产品是哪个将对象的创建与实例化延迟到子类这样工厂的设计就符合“开闭原则”了扩展时不必去修改原来的代码。在使用时用于只需知道产品对应的具体工厂关注具体的创建过程甚至不需要知道具体产品类的类名当我们选择哪个具体工厂时就已经决定了实际创建的产品是哪个了。 工厂方法一半分为四个角色 抽象工厂每个具体工厂需要继承抽象工厂一般来说用抽象类来实现 具体工厂需要继承抽象工厂生产具体产品一般是具体生产逻辑 抽象产品具体产品需要继承有时候也可以没有 具体产品我们所具体需要的对象 代码示例 产品类 abstract class food{public food(){} } public class noodles extends food{public noodles () {System.out.println(制造--noodles );} } public class rice extends food{public rice (){System.out.println(制造--rice );} }工厂类 interface Factoryfood {BMW createfood(); }public class Factorynoodles implements Factoryfood{Overridepublic noodles createfood() {return new BMWnoodles();}} public class Factoryrice implements Factoryfood {Overridepublic rice createfood() {return new rice();} }用户类 public class Customer {public static void main(String[] args) {Factoryrice factoryrice new Factoryrice();rice factoryrice.createrice();Factorynoodles factorynoodles new Factorynoodles();noodles noodles factorynoodles.createnoodles();} }4.抽象工厂模式 工厂方法模式中一个工厂生成具体产品但是正如我文章开头所说我们所需要的可能不仅仅是一个产品而是一个产品加某些组件或者说有几个产品我们需要在一个工厂内生产。此时工厂方法模式就不再适用。 抽象工厂模式提供一个工厂生产多个组件产品的功能简单的说一个工厂生产的是一个产品族 抽象工厂 AbstractFactory定义了一个接口这个接口包含了一组方法用来生产产品所有的具体工厂都必须实现此接口。 具体工厂 ConcreteFactory用于生产不同产品族要创建一个产品用户只需使用其中一个工厂进行获取完全不需要实例化任何产品对象。 抽象产品 AbstractProduct这是一个产品家族每一个具体工厂都能够生产一整组产品。 具体产品 Product 抽象工厂相对来说没那么好理解建议大家阅读一下下面的代码 代码示例 产品类 public interface Engine {} public class EngineA implements Engine{ public EngineA(){ System.out.println(制造--EngineA); } } public class EngineB implements Engine{ public EngineB(){ System.out.println(制造--EngineB); } } public interface Aircondition {} public class AirconditionA implements Aircondition{ public AirconditionA(){ System.out.println(制造--AirconditionA); } } public class AirconditionB implements Aircondition{ public AirconditionB(){ System.out.println(制造--AirconditionB); } } 工厂类 //创建工厂的接口 public interface AbstractFactory { public Engine createEngine();public Aircondition createAircondition(); } public class Factoryrice implements AbstractFactory{ Override public Engine createEngine() { return new EngineA(); } Override public Aircondition createAircondition() { return new AirconditionA(); } } //宝马523系列 public class Factorynoodles implements AbstractFactory { Override public Engine createEngine() { return new EngineB(); } Override public Aircondition createAircondition() { return new AirconditionB(); } } 用户类 public class Customer { public static void main(String[] args){ FactoryBMW320 factoryrice new Factoryrice(); factoryBMW320.createEngine();factoryBMW320.createAircondition();FactoryBMW523 factorynoodles new Factorynoodles(); factoryBMW523.createEngine();factoryBMW523.createAircondition();} }5.工厂模式小结 工厂模式主要是通过工厂这个对象来解耦面对不同需求采用不同的工厂模式切忌硬套代码模板 工厂模式应该是我们平常用到的最多的设计模式之一但大家不要盲目去用有很多用ifelse能够很简单解决的业务也可以不用工厂模式不然到时候反而增加了我们的代码复杂度。 后面还会持续更新各种设计模式
http://www.hkea.cn/news/14444554/

相关文章:

  • 陕西建设厅执业资格注册中心网站怎样做艾条艾柱网站
  • 城固网站建设wordpress 博客主机
  • 温州网站关键词推广最佳的资源磁力搜索引擎
  • 网站建设在哪里进行企业组网方案
  • 网站建设外包还是自建物联网工程是干什么的
  • 百度站长平台诊断上海seo方案
  • 南昌做兼职的网站设计网站开发设置网页端口
  • 周大福网站设计特点个人网站备案信息填写
  • 怎么区分营销型和展示型的网站东莞关键词排名推广
  • 网站开发设计书籍wordpress产品参数多图
  • 赣州网站建设好么深圳营销网站建设服务
  • 建设一个地方门户网站福建省住房城乡建设厅网站
  • 手套网站模板建设响应式网站有哪些好处
  • 如何提高网站的点击量自己怎么做网站游戏
  • 免费个人自助建站网站 备案 中国 名字吗
  • 申请个人网站做seo必须有自己网站吗
  • 杭州营销网站建设平台视频网站建设工具
  • iis 网站属性北京亦庄做网站公司
  • 哪些网站做科技专题app开发公司有什么部门
  • 燕赵邯郸网站建设个人网站推广方法
  • 找生产厂家的网站农庄网站
  • 外链是不是把自己的网站信息发布到别人的网站上?wordpress文章引用格式
  • 河南省工程项目信息公示栏电商seo是什么意思啊
  • 阿坝网站设计三亚最新发布
  • 无忧网站建设服务宁波自适应网站建设
  • 如何在阿里巴巴建设网站网站安全认证去哪做
  • 网站设计师的岗位职责外贸公司应该怎样做外贸网站
  • 又一个wordpress网站科研实验室网站建设
  • 主机 可以 多少 网站网站建设意义
  • 小学学校网站中国建设银行网站首页下载