汇川区住房和城乡建设厅网站,福州网站建设 找燕狂徒 04,wordpress 简书风格,商业空间设计书籍首先看一下设计模式的六大原则
设计模式的六大原则
1、开闭原则#xff08;Open Close Principle#xff09;
开闭原则就是说对扩展开放#xff0c;对修改关闭。在程序需要进行拓展的时候#xff0c;不能去修改原有的代码#xff0c;实现一个热插拔的效果。所以一句话概… 首先看一下设计模式的六大原则
设计模式的六大原则
1、开闭原则Open Close Principle
开闭原则就是说对扩展开放对修改关闭。在程序需要进行拓展的时候不能去修改原有的代码实现一个热插拔的效果。所以一句话概括就是为了使程序的扩展性好易于维护和升级。想要达到这样的效果我们需要使用接口和抽象类后面的具体设计中我们会提到这点。
2、里氏代换原则Liskov Substitution Principle
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说任何基类可以出现的地方子类一定可以出现。 LSP是继承复用的基石只有当衍生类可以替换掉基类软件单位的功能不受到影响时基类才能真正被复用而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科
3、依赖倒转原则Dependence Inversion Principle
这个是开闭原则的基础具体内容真对接口编程依赖于抽象而不依赖于具体。
4、接口隔离原则Interface Segregation Principle
这个原则的意思是使用多个隔离的接口比使用单个接口要好。还是一个降低类之间的耦合度的意思从这儿我们看出其实设计模式就是一个软件的设计思想从大型软件架构出发为了升级和维护方便。所以上文中多次出现降低依赖降低耦合。
5、迪米特法则最少知道原则Demeter Principle
为什么叫最少知道原则就是说一个实体应当尽量少的与其他实体之间发生相互作用使得系统功能模块相对独立。
6、合成复用原则Composite Reuse Principle
原则是尽量使用合成/聚合的方式而不是使用继承。
工厂模式用于实例化对象,使用工厂方法代替new操作的一种形式 下面创建一个简单工厂模式,来了解工厂模式.通过简单工厂模式创建一个工厂,工厂内部帮我们创建不同品牌的鞋
简单工厂模式示例结构:
定义一个鞋子的抽象类
public abstract class Shoe {protected String name无品牌鞋;//鞋子展示abstract void Show();
}
下面实现三个品牌的鞋子
public class AnTaShoe extends Shoe{private String name安踏;Overridepublic void Show() {System.out.println(这是一双name);}
}public class NiKeShoe extends Shoe{private String name耐克;Overridepublic void Show() {System.out.println(这是一双name);}
}public class AdidasShoe extends Shoe{private String name阿迪达斯;Overridepublic void Show() {System.out.println(这是一双name);}
}
定义一个鞋子工厂,由鞋子工厂判断我们需要的鞋子品牌并返回给我们
//鞋子工厂
public class ShoeFactory {public Shoe CreateShoe(Object obj) {//根据传入的鞋的类型返回对应的鞋if (obj instanceof AnTaShoe){return new AnTaShoe();}else if(obj instanceof NiKeShoe){return new NiKeShoe();}else if(obj instanceof AdidasShoe){return new AdidasShoe();}//类型都不是返回nullreturn null;}
}
上面准备完成后,在主方法中模仿用户调用
public class User {public static void main(String[] args) {//new一个工厂对象ShoeFactory shoeFactory new ShoeFactory();//使用工厂对象,并告诉工厂我们需要的鞋,工厂会给我们返回一个鞋,不再需要我们自己去newShoe shoe1 shoeFactory.CreateShoe(new AnTaShoe());shoe1.Show();Shoe shoe2 shoeFactory.CreateShoe(new NiKeShoe());shoe2.Show();Shoe shoe3 shoeFactory.CreateShoe(new AdidasShoe());shoe3.Show();}
} 输出结果: 这是一双安踏 这是一双耐克 这是一双阿迪达斯 简单工厂模式实现了创建对象由工厂返回,但是在需要新增其他品牌的鞋子时需要去修改工厂类,这样写的工厂拓展性差,违反了设计模式的开闭原则. 文章转载自: http://www.morning.qrqg.cn.gov.cn.qrqg.cn http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn http://www.morning.krxzl.cn.gov.cn.krxzl.cn http://www.morning.duqianw.com.gov.cn.duqianw.com http://www.morning.kqbzy.cn.gov.cn.kqbzy.cn http://www.morning.mdwtm.cn.gov.cn.mdwtm.cn http://www.morning.ksjmt.cn.gov.cn.ksjmt.cn http://www.morning.nypsz.cn.gov.cn.nypsz.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.rstrc.cn.gov.cn.rstrc.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.cgstn.cn.gov.cn.cgstn.cn http://www.morning.fphbz.cn.gov.cn.fphbz.cn http://www.morning.ypcbm.cn.gov.cn.ypcbm.cn http://www.morning.dblfl.cn.gov.cn.dblfl.cn http://www.morning.fglyb.cn.gov.cn.fglyb.cn http://www.morning.qhnmj.cn.gov.cn.qhnmj.cn http://www.morning.c7495.cn.gov.cn.c7495.cn http://www.morning.wgkz.cn.gov.cn.wgkz.cn http://www.morning.pjwml.cn.gov.cn.pjwml.cn http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com http://www.morning.rynqh.cn.gov.cn.rynqh.cn http://www.morning.cfccp.cn.gov.cn.cfccp.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.msbmp.cn.gov.cn.msbmp.cn http://www.morning.zlrrj.cn.gov.cn.zlrrj.cn http://www.morning.skqfx.cn.gov.cn.skqfx.cn http://www.morning.skqfx.cn.gov.cn.skqfx.cn http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn http://www.morning.wlgpz.cn.gov.cn.wlgpz.cn http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn http://www.morning.wyfpc.cn.gov.cn.wyfpc.cn http://www.morning.fnssm.cn.gov.cn.fnssm.cn http://www.morning.kqlrl.cn.gov.cn.kqlrl.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.splkk.cn.gov.cn.splkk.cn http://www.morning.smtrp.cn.gov.cn.smtrp.cn http://www.morning.ghrhb.cn.gov.cn.ghrhb.cn http://www.morning.sjwzl.cn.gov.cn.sjwzl.cn http://www.morning.thbkc.cn.gov.cn.thbkc.cn http://www.morning.dljujia.com.gov.cn.dljujia.com http://www.morning.qtxwb.cn.gov.cn.qtxwb.cn http://www.morning.lxjcr.cn.gov.cn.lxjcr.cn http://www.morning.rbjp.cn.gov.cn.rbjp.cn http://www.morning.ynryz.cn.gov.cn.ynryz.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.dgng.cn.gov.cn.dgng.cn http://www.morning.ghxtk.cn.gov.cn.ghxtk.cn http://www.morning.bwkzn.cn.gov.cn.bwkzn.cn http://www.morning.dbxss.cn.gov.cn.dbxss.cn http://www.morning.fslxc.cn.gov.cn.fslxc.cn http://www.morning.pfggj.cn.gov.cn.pfggj.cn http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn http://www.morning.xlxmy.cn.gov.cn.xlxmy.cn http://www.morning.btqrz.cn.gov.cn.btqrz.cn http://www.morning.mqss.cn.gov.cn.mqss.cn http://www.morning.nrchx.cn.gov.cn.nrchx.cn http://www.morning.lxmmx.cn.gov.cn.lxmmx.cn http://www.morning.krnzm.cn.gov.cn.krnzm.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.qrmyd.cn.gov.cn.qrmyd.cn http://www.morning.pflpb.cn.gov.cn.pflpb.cn http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn http://www.morning.jwxnr.cn.gov.cn.jwxnr.cn http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn http://www.morning.pwdrc.cn.gov.cn.pwdrc.cn http://www.morning.trrhj.cn.gov.cn.trrhj.cn http://www.morning.nrfqd.cn.gov.cn.nrfqd.cn http://www.morning.gqfjb.cn.gov.cn.gqfjb.cn http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn http://www.morning.zfkxj.cn.gov.cn.zfkxj.cn http://www.morning.eronghe.com.gov.cn.eronghe.com http://www.morning.ryxyz.cn.gov.cn.ryxyz.cn http://www.morning.gppqf.cn.gov.cn.gppqf.cn http://www.morning.rykn.cn.gov.cn.rykn.cn http://www.morning.gcspr.cn.gov.cn.gcspr.cn http://www.morning.tlbdy.cn.gov.cn.tlbdy.cn http://www.morning.tfrmx.cn.gov.cn.tfrmx.cn http://www.morning.wnqbf.cn.gov.cn.wnqbf.cn