如何设计中国十大最强国企网站的界面风格?

摘要:网站界面风格设计描述,中国最强十大国企,漳州网站建设去博大a优,标志设计分析前言 上一篇,我们讲了开放封闭原则,想要让系统符合开放封闭原则,最重要的就
网站界面风格设计描述,中国最强十大国企,漳州网站建设去博大a优,标志设计分析前言 上一篇#xff0c;我们讲了开放封闭原则#xff0c;想要让系统符合开放封闭原则#xff0c;最重要的就是我们要构建起相应的扩展模型#xff0c;所以#xff0c;我们要面向接口编程。 而大部分的面向接口编程要依赖于继承实现#xff0c;继承的重要性不如封装和多…前言 上一篇我们讲了开放封闭原则想要让系统符合开放封闭原则最重要的就是我们要构建起相应的扩展模型所以我们要面向接口编程。 而大部分的面向接口编程要依赖于继承实现继承的重要性不如封装和多态但在大部分面向对象程序设计语言中继承却是构建一个对象体系的重要组成部分。 理论上在定义了接口之后我们就可以把继承这个接口的类完美地嵌入到我们设计好的体系之中。然而用了继承子类就一定设计对了吗事情可能并没有这么简单。新的类虽然在语法上声明了一个接口形成了一个继承关系但我们要想让这个子类真正地扮演起这个接口的角色还需要有一个好的继承指导原则。 所以这一篇我们就来看看可以把继承体系设计好的设计原则Liskov 替换法则。 Liskov 替换原则 2008 年图灵奖授予 Barbara Liskov表彰她在程序设计语言和系统设计方法方面的卓越工作。她在设计领域影响最深远的就是以她名字命名的 Liskov 替换原则Liskov substitution principle简称 LSP。 1988 年Barbara Liskov 在描述如何定义子类型时写下这样一段话 这里需要如下替换性质若每个类型 S 的对象 o1都存在一个类型 T 的对象 o2使得在所有针对 T 编程的程序 P 中用 o1 替换 o2 后程序 P 行为保持不变则 S 是 T 的子类型。 用通俗的讲法来说意思就是子类型subtype必须能够替换其父类型base type。 这句话看似简单但是违反这个原则后果是很严重的比如父类型规定接口不能抛出异常而子类型抛出了异常就会导致程序运行的失败。 虽然很好理解但你可能会有个疑问我的子类型不都是继承自父类型咋就能违反 LSP 呢这个 LSP 是不是有点多此一举呢 我们来看个例子有不少的人经常写出类似下面这样的代码 void handle(final Handler handler) {if (handler instanceof ReportHandler) {// 生成报告((ReportHandler)handler).report();return;}if (handler instanceof NotificationHandler) {// 发送通知((NotificationHandler)handler).sendNotification();}... }根据上一篇的内容这段代码显然是违反了 OCP 的。另外在这个例子里面虽然我们定义了一个父类型 Handler但在这段代码的处理中是通过运行时类型识别Run-Time Type Identification简称 RTTI也就是这里的 instanceof知道子类型是什么的然后去做相应的业务处理。 但是ReportHandler 和 NotificationHandler 虽然都是 Handler 的子类但它们没有统一的处理接口所以它们之间并不存在一个可以替换的关系这段代码也是违反 LSP 的。这里我们就得到了一个经验法则如果你发现了任何做运行时类型识别的代码很有可能已经破坏了 LSP。 再来看一个实例,也是违法了LSP public class TestA {public void fun(int a,int b){System.out.println(ab(ab));}public static void main(String[] args) {System.out.println(父类的运行结果);TestA anew TestA();a.fun(1,2);//父类存在的地方可以用子类替代//子类B替代父类ASystem.out.println(子类替代父类后的运行结果);TestB bnew TestB();b.fun(1,2);} } class TestB extends TestA{Overridepublic void fun(int a, int b) {System.out.println(a-b(a-b));} }大家肯定也都能猜出来结果是什么样子的 父类的运行结果 123 子类替代父类后的运行结果 1-2-1Process finished with exit code 0我们想要的结果是“123”。可以看到方法重写后结果就不是了我们想要的结果了也就是这个程序中子类B不能替代父类A。
阅读全文